《vb_ppt06.ppt》由会员分享,可在线阅读,更多相关《vb_ppt06.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、大学计算机基础教程TaiYuan University of Technology第第6 6章章 用户交互:使用鼠标、用户交互:使用鼠标、键盘和菜单键盘和菜单Visual Basic 程序设计教程程序设计教程键盘、鼠标和菜单是用户和程序进行交互的键盘、鼠标和菜单是用户和程序进行交互的主要工具。了解使用它们进行用户交互的设计要主要工具。了解使用它们进行用户交互的设计要求、方法,并理解交互过程中如何进行控制。求、方法,并理解交互过程中如何进行控制。2Visual Basic程序设计教程键盘是主要的输入工具键盘是主要的输入工具。一般认为键盘对应于。一般认为键盘对应于ASCII码,每一个按键将产生一个
2、对应的码,每一个按键将产生一个对应的ASCII码,由键码,由键盘传送给计算机的操作系统,根据用户程序的需要盘传送给计算机的操作系统,根据用户程序的需要再由操作系统产生键值。再由操作系统产生键值。鼠标器是图形界面系统最为方便快捷的交互工具。鼠鼠标器是图形界面系统最为方便快捷的交互工具。鼠标操作有单击、双击以及移动等操作。标操作有单击、双击以及移动等操作。3Visual Basic程序设计教程菜单则是另外一种菜单则是另外一种GUI工具模式,它把各种程序操工具模式,它把各种程序操作过程集于一个窗口中的菜单构造上,可以通作过程集于一个窗口中的菜单构造上,可以通过鼠标和键盘设置两者的结合使得对菜单的操过
3、鼠标和键盘设置两者的结合使得对菜单的操作转换为程序的执行。作转换为程序的执行。所谓的用户交互过程就是程序把执行的情况显示所谓的用户交互过程就是程序把执行的情况显示在屏幕上,用户把程序运行的数据、操作选择在屏幕上,用户把程序运行的数据、操作选择的命令,通过这些交互工具发送给程序,以达的命令,通过这些交互工具发送给程序,以达到互动、协调完成程序处理过程。到互动、协调完成程序处理过程。4Visual Basic程序设计教程【例例6-1】使用鼠标按使用鼠标按键和移动操作。键和移动操作。在这个示例中,把鼠在这个示例中,把鼠标左键的按下标左键的按下(MouseDown)和放)和放 开开(MouseUp)分
4、开处)分开处理,结合按键(理,结合按键(Shift)的使用产生不同的效果。的使用产生不同的效果。5Visual Basic程序设计教程我们使用鼠标进行不同的操作,系统通过使用指我们使用鼠标进行不同的操作,系统通过使用指针和对鼠标按键事件过程程序进行响应。有一针和对鼠标按键事件过程程序进行响应。有一些有关鼠标的属性可以在设置窗体和控件时进些有关鼠标的属性可以在设置窗体和控件时进行设置,但对大多数情况,例如单击、双击和行设置,但对大多数情况,例如单击、双击和移动以及拖动鼠标需要进行必要的程序代码,移动以及拖动鼠标需要进行必要的程序代码,以便完成响应的工作。以便完成响应的工作。6Visual Bas
5、ic程序设计教程6.3.1 程序状态:改变鼠标指针的形状程序状态:改变鼠标指针的形状当一个应用程序进入不同的状态,其鼠标的指针当一个应用程序进入不同的状态,其鼠标的指针形状发展变化,用户可以根据指针的形状了解形状发展变化,用户可以根据指针的形状了解应该进行哪种类型的操作。应该进行哪种类型的操作。VB控件属性中使用控件属性中使用MousePointer设置指针类型,设置指针类型,使用使用MouseIcon设置鼠标形状的图形。设置鼠标形状的图形。7Visual Basic程序设计教程VB允许用户自定义鼠标指针,这时可以把允许用户自定义鼠标指针,这时可以把MousePointer的属性值为设置为的属
6、性值为设置为99,就可以通,就可以通过程序指定一个鼠标指针的图标文件。例如在过程序指定一个鼠标指针的图标文件。例如在窗体的窗体的Load事件中加入语句:事件中加入语句:Me.MouseIcon=LoadPicture(IcoPoint04.ico)8Visual Basic程序设计教程【例例6-2】显示显示VB的指针形状。的指针形状。Private Sub Form_Click()Static Count As Byte Cls Print Chr(10)+Chr(13)+鼠标指针常量值鼠标指针常量值:;Count If Count=65 And KeyAscii=90 Then Digit1
7、=KeyAscii+32 Else Digit1=KeyAscii-32 End If Char1=Chr(Digit1)TxtDemo.Text=Char1+的的ASCII码为:码为:+Str(Digit1)+Chr(13)+Chr(10)TxtDemo.Text=的的ASCII码为:码为:+Str$(KeyAscii)+Chr(13)+Chr(10)+TxtDemo.TextEnd Sub 22Visual Basic程序设计教程6.4.2 特殊按键处理特殊按键处理:KeyDown和和KeyUp一个对象具有一个对象具有焦点焦点时,事件在按下键时,事件在按下键(KeyDown)或松开键或松开
8、键(KeyUp)时发生。时发生。KeyDown和和KeyUp的的处理过程为:处理过程为:Private Sub 对象名对象名_KeyDown(index As Integer,Keycode As Integer,Shift As Integer)Private Sub对象名对象名_KeyUp(index As Integer,Keycode As Integer,shift As Integer)23Visual Basic程序设计教程其中其中Index选项参数的意义和前述的选项参数的意义和前述的KeyPress相同相同,其他几个参数的意义如下:其他几个参数的意义如下:(1)Keycode是
9、一个键代码,指示键盘上按下的物理键,是一个键代码,指示键盘上按下的物理键,诸如诸如 vbKeyF1(F1键)或键)或vbKeyHome(HOME 键)等。键)等。KeyPress中的中的KeyAscii只含可显示字符键只含可显示字符键,而,而KeyCode包含了键盘上所有键的代码包含了键盘上所有键的代码。(2)Shift是在该事件发生时响应是在该事件发生时响应Shift,Ctrl和和Alt键的状键的状态的一个整数。(参见下一节)态的一个整数。(参见下一节)24Visual Basic程序设计教程6.4.2 特殊按键处理特殊按键处理:KeyDown和和KeyUpKeyDown和和KeyUp事件经
10、常用于:扩展的字符事件经常用于:扩展的字符键如键如功能键功能键、定位键、键盘修饰键和按键的组、定位键、键盘修饰键和按键的组合、区别数字小键盘和常规数字键等。合、区别数字小键盘和常规数字键等。25Visual Basic程序设计教程【例例6-6】设计一个程序,在窗口上建立两个文本框,在右设计一个程序,在窗口上建立两个文本框,在右边的文本框中输入键盘的按键,在左边的文本框中显示这边的文本框中输入键盘的按键,在左边的文本框中显示这个键符号和对应的的代码。个键符号和对应的的代码。Private Sub Form_Load()Show TxtDemo2.SetFocusEnd Sub 按键产生按键产生K
11、eyDown事件过程事件过程Private Sub TxtDemo2_KeyDown(KeyCode As Integer,Shift As Integer)TxtDemo1.Text=Chr(KeyCode)+的代码为的代码为 TxtDemo1.Text=TxtDemo1.Text+Str$(KeyCode)TxtDemo2=TxtDemo2.SetFocusEnd Sub26Visual Basic程序设计教程在在VB中,使用中,使用Shift参数保存参数保存Shift、Ctrl、Alt这三个这三个键的状态,可以使用这些状态,和键盘的其他按键键的状态,可以使用这些状态,和键盘的其他按键或者
12、鼠标的或者鼠标的Button按键进行组合。按键进行组合。表表6.7 Shift参数关联的参数关联的VB常量常量 常量常量值值描述描述vbShiftMask1Shift键键被被记录记录vbCtrlMask2Ctrl键键被被记录记录vbAltMask4Alt键键被被记录记录27Visual Basic程序设计教程在在VB中,允许组合键可以单独一个。两个或中,允许组合键可以单独一个。两个或者三个全部被按下,因此者三个全部被按下,因此Shift参数的值为参数的值为3、6、7,它们都是有效值,分别代表,它们都是有效值,分别代表Shift键和键和Ctrl键、键、Ctrl键和键和Atl键以及这三个键都被按键
13、以及这三个键都被按下。下。28Visual Basic程序设计教程菜单(菜单(Menu)是)是Windows应用程序中的重要组成应用程序中的重要组成部分。菜单的最大特点是把程序的功能以菜单的部分。菜单的最大特点是把程序的功能以菜单的形式列出,用户需要的时候可以选择使用。形式列出,用户需要的时候可以选择使用。每一个菜单项对应于一段程序的执行,类似于执行每一个菜单项对应于一段程序的执行,类似于执行一个命令。一个命令。VB支持支持Windows的下拉式和弹出式两种类型的菜的下拉式和弹出式两种类型的菜单。单。29Visual Basic程序设计教程菜单标题菜单栏菜单项分隔线快捷键图 6.7 菜单的组成
14、元素6.6.1 什么是菜单什么是菜单30Visual Basic程序设计教程6.6.2 使用菜单编辑器使用菜单编辑器在在VB中,使用中,使用“菜单编辑器菜单编辑器”设计菜单。有四种方法进设计菜单。有四种方法进入入“菜单编辑器菜单编辑器”。(1)在)在VB IDE下,打开下,打开“工具工具”菜单,选择菜单,选择“菜单编辑器菜单编辑器”。(2)单击)单击VB IDE菜单栏下方的工具按钮上的菜单编辑器,菜单栏下方的工具按钮上的菜单编辑器,图标为图标为 。(3)使用快捷键)使用快捷键 Ctrl+E。(4)在)在“工程工程”窗口使用快捷菜单,选择窗口使用快捷菜单,选择“菜单编辑器菜单编辑器”。菜单编辑器
15、分为上下两个部分,上部为菜单控件属性,菜单编辑器分为上下两个部分,上部为菜单控件属性,下部为菜单控件列表框。每建立一个菜单项,将被列下部为菜单控件列表框。每建立一个菜单项,将被列在列表框中。在列表框中。31Visual Basic程序设计教程1标题(标题(Caption)指定菜单项要显示的标题文字。指定菜单项要显示的标题文字。2名称名称(Name)这是作为菜单项控件的名称。这是作为菜单项控件的名称。3索引(索引(Index)4快捷键(快捷键(Short Cut)在这个组合列表框中给出了在这个组合列表框中给出了VB预预先定义的各种快捷键,编程者可先定义的各种快捷键,编程者可以选择使用,以选择使用
16、,7复选(复选(Checked)是否置复选标志(是否置复选标志()。)。8可用(可用(Enabled)9可见(可见(Visible)11分隔线分隔线在菜单项的标题中,输入连接符在菜单项的标题中,输入连接符“-”。图6.8 菜单编辑器32Visual Basic程序设计教程设计菜单的注意任务就是确定各个菜单项的名称设计菜单的注意任务就是确定各个菜单项的名称以及要实现的内容,然后有条理地组织它们。以及要实现的内容,然后有条理地组织它们。我们设计应用程序应当尽量保持我们设计应用程序应当尽量保持Windows应用应用程序的风格,界面上保持一致。程序的风格,界面上保持一致。6.6.3 设计菜单设计菜单3
17、3Visual Basic程序设计教程6.6.4 子菜单子菜单严格意义上,在主菜单严格意义上,在主菜单 下的各个菜单项都是下的各个菜单项都是 “子菜单子菜单”,而子菜单也可以有子菜单。在,而子菜单也可以有子菜单。在VB中,允许每个菜单项最多包含中,允许每个菜单项最多包含5级子菜单。级子菜单。尽管子菜单有时是需要的,但还是要限制使用它尽管子菜单有时是需要的,但还是要限制使用它们,因为多级菜单结构往往会使得用户查找命们,因为多级菜单结构往往会使得用户查找命令功能变得复杂令功能变得复杂。34Visual Basic程序设计教程6.6.5 菜单编程:菜单的菜单编程:菜单的Click事件事件菜单事件只有
18、一个,就是菜单的菜单事件只有一个,就是菜单的Click事件。除了分隔事件。除了分隔线外,每个菜单项都可以识别它对应的线外,每个菜单项都可以识别它对应的Click事件。事件。【例例6-7】使用菜单设计一个完成二进制、十进制、八使用菜单设计一个完成二进制、十进制、八进制和十六进制数进行相互转换的程序。进制和十六进制数进行相互转换的程序。35Visual Basic程序设计教程Private Sub Form_Load()Show Label1.Caption=Label2.Caption=TxtInNum.Text=TxtInNum.Enabled=False TxtOutNum.Text=Txt
19、OutNum.Enabled=FalseEnd SubPrivate Sub MnuExit_Click()EndEnd SubPrivate Sub MnuHex2_Click()Label1.Caption=十进制数为:十进制数为:Label2.Caption=十六进制数为:十六进制数为:TxtInNum.Text=InputBox(请输入一个十进制数请输入一个十进制数,输入输入)TxtOutNum.Text=Hex(Val(TxtInNum.Text)End SubPrivate Sub MunOctor2_Click()十进制到八进制十进制到八进制 Label1.Caption=十进制
20、数为:十进制数为:Label2.Caption=八进制为:八进制为:TxtInNum.Text=InputBox(请输入一个十进制数请输入一个十进制数,输入输入)TxtOutNum.Text=Oct(Val(TxtInNum.Text)End Sub36Visual Basic程序设计教程 在程序执行的不同状态下,单击鼠标的右键,在程序执行的不同状态下,单击鼠标的右键,弹出一个菜单,供用户选择合适的操作命令,对于弹出一个菜单,供用户选择合适的操作命令,对于Windows应用程序而言,不但是一个友好的显示效应用程序而言,不但是一个友好的显示效果,更是一个快捷的方法,因此弹出式菜单也叫快果,更是一
21、个快捷的方法,因此弹出式菜单也叫快捷菜单。捷菜单。37Visual Basic程序设计教程6.7.1 设计弹出式菜单设计弹出式菜单【例例6-8】设计一个将文本框的文本进行对齐操作的弹出设计一个将文本框的文本进行对齐操作的弹出式菜单。式菜单。38Visual Basic程序设计教程1使用菜单编辑器使用菜单编辑器 在设计弹出式菜单时,主菜单项应设置在设计弹出式菜单时,主菜单项应设置“可见可见”属性为属性为False(不选)。我们给这个弹出(不选)。我们给这个弹出式菜单命名为式菜单命名为PopMnu,下面有三个菜单项分别,下面有三个菜单项分别为为“左对齐左对齐”“居中居中”和和“右对齐右对齐”。当在
22、窗口。当在窗口单击右键则弹出的是三个子菜单项的菜单。单击右键则弹出的是三个子菜单项的菜单。39Visual Basic程序设计教程2PopupMenu方法。方法。激活弹出式菜单使用激活弹出式菜单使用PopupMenu方法。使方法。使用格式为:用格式为:PopupMenu 菜单名称菜单名称 或者使用调用的方法,格式为:或者使用调用的方法,格式为:Call PopupMenu(菜单名称)(菜单名称)40Visual Basic程序设计教程3在何地使用弹出式菜单在何地使用弹出式菜单菜单对象要通过菜单事件触发,但由于弹出式菜菜单对象要通过菜单事件触发,但由于弹出式菜单是隐藏的,也就是它的属性被设置为不
23、可见,单是隐藏的,也就是它的属性被设置为不可见,因此就需要另外的事件触发,再用因此就需要另外的事件触发,再用PopupMenu方方法显示弹出式菜单后进入菜单事件。一般是鼠标法显示弹出式菜单后进入菜单事件。一般是鼠标右键被按下,右键被按下,“弹出弹出”菜单菜单 4对弹出式菜单的菜单项进行菜单过程的编程,对弹出式菜单的菜单项进行菜单过程的编程,使之完成命令操作。使之完成命令操作。41Visual Basic程序设计教程Private Sub Form_Load()TxtDemo.Text=Chr(13)+Chr(10)TxtDemo.Text=TxtDemo.Text+这是一个关于弹出式菜单的示例
24、程序这是一个关于弹出式菜单的示例程序+Chr(13)+Chr(10)TxtDemo.Text=TxtDemo.Text+Chr(13)+Chr(10)+单击鼠标右键,对文本进行对齐操作单击鼠标右键,对文本进行对齐操作End SubPrivate Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=vbRightButton Then PopupMenu PopMnu1End SubPrivate Sub MnuLeft_Click()TxtDemo.Alignment=0
25、End SubPrivate Sub MnuMiddle_Click()TxtDemo.Alignment=2End SubPrivate Sub MnuRight_Click()TxtDemo.Alignment=1End Sub42Visual Basic程序设计教程【例例6-9】设计一个程序,捕捉鼠标和按键的全部操作,设计一个程序,捕捉鼠标和按键的全部操作,并在窗口上显示鼠标和键盘的按键状态,即指示是哪个键并在窗口上显示鼠标和键盘的按键状态,即指示是哪个键被按下了。被按下了。设计思路:设计思路:捕捉键盘按键和鼠标按键,要知道究竟是哪个具体的捕捉键盘按键和鼠标按键,要知道究竟是哪个具体的位
26、置,只有使用位置,只有使用KeyDown事件和事件和MouseDown事件。事件。43Visual Basic程序设计教程Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)Label2.Caption=您所按下的键是您所按下的键是 +Chr(KeyCode)+键值为键值为 +Str$(KeyCode)End SubPrivate Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)Dim Str1 As String S
27、tr1=您按下的是鼠标的您按下的是鼠标的 Select Case Button Case 1:Label1.Caption=Str1+左按钮左按钮 Case 2:Label1.Caption=Str1+右按钮右按钮 Case 4:Label1.Caption=Str1+中间按钮中间按钮 End SelectEnd Sub44Visual Basic程序设计教程【例例6-10】设计一个简单的记事本设计一个简单的记事本 45Visual Basic程序设计教程Private Sub TxtCopy_Click()On Error Resume Next Clipboard.SetText TxtDemo.SelTextEnd SubPrivate Sub TxtCut_Click()On Error Resume Next Clipboard.SetText TxtDemo.SelText TxtDemo.SelText=End SubPrivate Sub TxtPaste_Click()On Error Resume Next TxtDemo.SelText=Clipboard.GetText TxtDemo.SelText=End Sub46Visual Basic程序设计教程
限制150内