(中职)可视化编程应用-Visual Basic模块5 鼠标与键盘的控制电子课件_第1页
(中职)可视化编程应用-Visual Basic模块5 鼠标与键盘的控制电子课件_第2页
(中职)可视化编程应用-Visual Basic模块5 鼠标与键盘的控制电子课件_第3页
(中职)可视化编程应用-Visual Basic模块5 鼠标与键盘的控制电子课件_第4页
(中职)可视化编程应用-Visual Basic模块5 鼠标与键盘的控制电子课件_第5页
已阅读5页,还剩42页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、YCF正版可修改PPT(中职)可视化编程应用Visual Basic模块5 鼠标与键盘的控制电子课件模块5 鼠标与键盘的控制任务1 鼠标的控制 任务2 键盘的控制 模块5 鼠标与键盘的控制 在程序运行中,产生事件的主体有很多,其中尤其以键盘和鼠标为最多。例如,窗体、图片框与图像控件都能检测鼠标指n一的位置,并可判定其左、右键是否已按下,还能响应鼠标按钮与Shift , Ctrl或Alt键的各种组合。利用键盘事件可以编程响应多种键盘操作,也可以解释、处理ASCII字符。 那么应如何使用这些常用的键盘和鼠标事件呢?上一页下一页返回任务1 鼠标的控制5. 1. 1鼠标事件 由用户操作鼠标所引起的,能

2、够被VB 6. 0各种对象识别的事件即为鼠标事件。常用的鼠标事件有单击(Click),双击(Dbl Click),按下任意键(MouseDown),释放任意键(MouseUp),移动鼠标(MouseMove)等。 需要注意的是,鼠标事件应该被其操作的对象识别,即鼠标位于某个控件或窗体上,则该控件或窗体将识别鼠标事件。鼠标事件的语法结构基本相同,下面以窗体上发生的MouseMove为例进行说明。 格式:Private Sub MouseMove ( Index As Integer , Button As Integer , Shift As Integer , X As Single,Y As

3、 Single) 其中: :可以响应鼠标事件的对象名称。 下一页返回任务1 鼠标的控制 Index:整数,用来唯一地标识一个在控件数组中的控件。如果不是控件数组此项省略。 Button:整数,对应鼠标各个按钮的状态,如果某个按钮按下,其中就有一个二进制位被设置。Button参数是具有相应于左按钮(位0),右按钮(位1),中间按钮(位2)的一个位字段。这些位置的值分别等于1, 2和 4。常数、bLeftButton, vbRightButton, vbMiddleButton分别代表这些值。Button参数指示这些鼠标按钮的整体状态。 Shift;整数,该整数指示Shift, Ctrl和Alt键

4、的状态。某按键按下使得一个二进制位被设置。Shift参数是具有相应于Shift(位0), Ctrl(位1)和Al t(位2)键最少一个位字段。这些位的值分别等于1,2和4。常数、bShiftMask, vbCtrlMask, vbAltMask分别代表这些值。例如,Ctrl和Alt键都被按下,则Shift的值就是6。 上一页下一页返回任务1 鼠标的控制 X,Y:指定鼠标指针当前位置的值。采用ScaleMode属性指定的坐标 系。 注意:指针移动得越快,在任何两点之间所能识别的MouseMove事件 越少,应用程序越能不断的迅速识别大量的MouseMove事件。因此,一个MouseMove事件过

5、程不适合去做那些需要大量计算时间的工作。上一页下一页返回任务1 鼠标的控制5. 1. 2鼠标光标形状 在应用程序中,经常要根据鼠标光标所在位置或应用程序的状况来决定鼠标光标的形状,如“I”字形鼠标表示插入文本,“+”字形表示画出线或圆等。鼠标光标的形状由对象的MousePointer属性确定,具体值可在属性窗口了解或参考VB 6. 0帮助文件。上一页返回任务2 键盘的控制5. 2. 1 Keypress事件 当用户按下和松开一个ANSI键时发生Keypress 事件。ANSI键包括数字,大小英文字母,Enter, BackSpace , Esc , Tab等键。方向键不会产生Keypress事

6、件。 格式: Private Sub Keypress( Index As Integer ,KeyAscii As Integer) 其中: Index整数,它用来唯一标识一个在控件数组中的控件。 KeyAscii:为返回一个标准数字ANSI键代码的ASCII值。KeyAscii通过引用传递,对它进行改变,可给对象发送一个不同的字符。KeyAscii改变为0时可取消击键,此时对象接收不到字符。下一页返回任务2 键盘的控制5. 2. 2 Keydown和KeyUp事件 当一个对象具有焦点时按下(Keydown)或松开(KeyUp)一个键时发生Keydown和Key U。事件。 格式: Priv

7、ate Sub Keydown ( Index As Integer, KeyCode As Integer, Shift As Integer) Private Sub KeyUp ( Index As Integer , KeyCode As Integer , Shift As Integer) 其中: KeyCode:是一个键代码,告诉用户事件过程所操作的物理键,并不区分大小写,如vbKeyFl(F1键)或vbKeyHome( Hotne键)。其余参数的解释参见前面的鼠标事件和Keypress事件。 对于Keydown和KeyUp事件可应用于大多数键,它们最经常的还是应用于扩展的字符,

8、如功能键、定位键、键盘修饰键和组合键,区分数字小键盘和常规数字键。上一页下一页返回任务2 键盘的控制 下列情况不能引用Keydown和KeyUp事件。 (1)窗体有一个命令按钮,并且Default属性设置为True时的Enter键。 (2)窗体有一个命令按钮,并且Cancel属性设置为True时的Esc键。 (3)Tab键。 例5一1编写一个简易的指法练习程序。要求最大限时1分钟。 (1)界面设计。在工程中添加窗体Form14,在窗体上添加3个标签控件,用来动态显示英文字母,1个命令按钮用来开始和结束程序,两个计时器控件,Timer1用来控制标签的移动,Timer2用来控制总时间,设计界面如图

9、5-1所示。 (2)属性设置。对象属性设置如表5-1所示。 上一页下一页返回任务2 键盘的控制 (3)代码编写如下。 Private Sub Command1_Click() Dim n As Integer , to As Integer IfCommandl. Caption=“开始”Then Timerl. Enabled = True ; Timer2. Enabled=True;Command1. Caption=“结束” 开始练习 Else Timerl. Enabled = False ; Timer2. Enabled= False 结束练习 If m0 Then Print击

10、键次数:m&次 Print“正确率为:” &n/m*100 &“%” End If End If End Sub上一页下一页返回任务2 键盘的控制Private Sub Form1_KeyPress( KeyAscii As Integer)to = to + 1 总击键数增If Chr(KeyAscii)=Label1. Caption Then Label1. Caption1=:n=n+1If Chr(KeyAscii)=Label2. Caption Then Label2. Caption=:n=n+1If Chr(KeyAscii)=Label3. Caption Then Lab

11、el3. Caption=:n=n+1End SubPrivate Sub Timer Timer()RandomizeIf Label1.Caption=ThenLabel1. To P=Forml4. Heigh:Label2. Height;Label2. Caption=Chr( CInt( Rnd,26+97)ElseLabel3. To P=Label3.To P-10End If 上一页下一页返回任务2 键盘的控制 If Label2. Caption=Then Label2. To P=Forml4. Heigh-Label2. Height:Label2. Caption=C

12、hr( CInt( Rnd*26+97) Else Label2. To P=Label2. To P-10 End If If Label3. Caption=Then Label3. To P=Forml4. Heigh-Label3. Height:Label3. Caption=Chr( CInt( Rnd*26+97) Else Label3. To P=Label3. To P-10 End If If Label1. To P=0 Then Label1.To P=Fortnl4. Heigh-Labell1. Height If Label2. To P=0 Then Labe

13、l2. To P=Fortnl4. Heigh-Label2. Height If Label3. To P=0 Then Label3. To P=Fortnl4. Heigh-Label3. Height End Sub上一页下一页返回任务2 键盘的控制Private Sub Timer2 Timer()Command1_ Click 时限到,调用“结束”时间过程End Sub程序运行结果如图5 -2所示。上一页下一页返回任务2 键盘的控制 1.拖放 拖放(Drag and Drop)是一种将一个对象(称为源对象)拖到另一个对象(称为目标对象)上执行某种操作的功能。要是拖动一个对象,可单击

14、该对象,按住鼠标左键,然后移到指定的新位置释放鼠标。其主要属性如下。 1)DragMode属性 拖放形式有两种,DragMode属性为1时为自动拖放,为0时为手工拖放。启动自动拖放时,用户在源对象上按住并拖动鼠标,则源对象随着鼠标一起移动,移动到某个目标对象上将产生DragOver事件,释放鼠标时将产生DragDrop事件。拖放过程本身并不会将源对象放到目标对象上。要将源对象拖放到某处,必须编写目标对象的DragOve:事件过程或DragDrop事件过程。 采用手动拖放方式时,必须在MouseDown事件过程中使用Drag方法来启动拖动操作,之后的操作方式同自动方式。 注意:当源对象DragM

15、ode属性为1时,不会接收Click事件和MouseMove事件。而源对象DragMode属性为0时,可以接收Click事件和MouseDown事件。上一页下一页返回任务2 键盘的控制 2)Draglcon属性 该属性用于改变拖动图标。拖动控件时,VB 6. 0将控件的灰色轮廓作为默认的拖动图标。对Draglcon属性进行设置,即可用其他图像代表该轮廓。设置Draglcon属性的最简单方法就是使用属性窗口。选择Draglcon属性后,单击按钮,在打开的“加载图标”对话框中选择图标文件(. ico , . cur) 。 可将VB 6. 0图标库或操作系统图标库中的图标分配给Draglcon属性,

16、也可用图像程序创建用户自己的拖动图标。 另外,在运行时可以采用如下方法获得一个控件的Draglcon属性。上一页下一页返回任务2 键盘的控制 Set Itmgel. DragIcon=Imagc2. Draglcon Set Imagel. DragIcon=Image2. Picture Set Imagel. DragIcon = LoadPicturc(c; Cursorssnow. ico 3)Drag方法 采用手动拖放方式时,必须使用Drag方法来启动拖动操作。但是,在自动拖放方式下,也可以使用Drag方法。 格式:对象名.Drag action 其中: 参数action可选项,是一

17、个指定要执行动作的VB 6. 0常数或数值,取值如下。 1 ; ( vbBeginDrag):启动控件的拖动。 2;(vbEndDrag):结束拖放并引发DragDrop事件。 0 ; ( vbCancel):取消拖放操作,不引发DragDrop事件。上一页下一页返回任务2 键盘的控制 【例5 -2】将图片框控件拖放到准确的位置。 (1)界面设计。在新建工程的Form 15窗体上添加一个图片框控件Picture1,任意设置一个Picture属性值。将Picture1的DragMode属性设置为1。因为在自动拖放方式下,MouseDown事件无效,也就是无法记住(x0 ,y0),如图5-3和图5

18、-4所示。 (2)代码编写。采用Move方法对控件进行移动时,总是将控件的左上角移动到Move方法参数所指定的位置。为了将控件准确地拖到鼠标所指的位置,应记住鼠标在控件上按下时在控件上所处的位置(x0, y0)。如果不记住(x0, y0),只采用“Move X,Y,则必须拖动控件的左上角,才能在释放鼠标后使控件不出现移动。注意(x0,y0)是相对于控件左上角的位置。上一页下一页返回任务2 键盘的控制 Dim x0 As Single,y0 As Single Private Sub Form DragDrop(Source As Control,x As Single,y As Single)

19、 Source. Moves( X- x0 ),(Y-y0) End Sub Private Sub Picture1 MouseDown( Button As Integer , Shift As Integer , X As Single,Y As Single) Picture1.Drag 1 x0=X:y0=Y End Sub上一页下一页返回任务2 键盘的控制 4. DragDrop事件和DragOver事件 在拖动对象经过某个对象事件时,该对象发生DragDrop事件,拖动对象并在某个对象上释放鼠标按钮时,该对象发生DragDrop事件。可用多种方法响应DragDrop事件和Drag

20、Over事件。 DragDrop 事件格式:Private Sub DragDrop(Source As Control, X As Single, Y As Single) DragOver 事件格式: Private Sub DragOver ( Source As Control , X As Single , Single, State As Integer) 其中Source的类型为控件,对应于正在被拖动的控件,因而可以像使用控件一样使用它,如可以引用其属性或调用其方法。x和)为当前鼠标指针在目标窗体或控件中水平(劝和垂直(户位置的数值。这些坐标值通常用目标坐标系统来表示。 Stat

21、e是一个整数,它相应于一个控件的转变状态,该控件在相关目标窗体或控件中正在被拖动,Stale =n:进入(源控件正被拖向一个目标范围内),State = 1:离去(源控件正被拖向一个目标范围外), State = 2 ;跨越(源控件在目标范围内从一个位置移到了另一个位置)。上一页下一页返回任务2 键盘的控制 下面的过程在拖动Picturt1经过Picture2时,将Picture1中的图像“移交给” Picture2 注意在设计时将Picture1. DragMove设置为to Private Sub Picture1.DragDrop(Source As Control,X As Singl

22、e,Y As Single) Piclurc2. Picture= Picture1.Picture: Picture1. Picture=Load Picture() End Sub 对源参数的使用应特别小自。因为源参数引用的是控件,但不一定清楚引用哪种控件。例如,如果控件是文本框,并试图引用Source. Value,则由于文本框没有Value属性而导致运行时错误。可以使用TypeOf函数判断源对象的控件类型,根据源对象的控件类型决定采用的操作方式。 格式:If TypeName is Then上一页下一页返回任务2 键盘的控制 例5一3判断拖动时的控件类型。 要求:将控件拖动到Pictu

23、re2图片框控件上时,判断拖动的控件类型,如果是图片框,则将其图片在Picture2上显示,并在窗体的标题内显示拖动控件的类型。当拖离Picture2时,清除Picture2中的图片,恢复窗体标题栏的名称(设计时窗体标题为“拖放”),如图5-5所示)。 (1)界面设计。在工程中添加窗体Form16,在窗体上添加两个图片框控件。 (2)属性设置。对象属性V如表5-2所示。 (3)代码编写如下。上一页下一页返回任务2 键盘的控制Private Sub Picture2_DragOver(Source As Control,X As Single,Y As Single,State As Integ

24、erIf Type0f Source Is Picture Then Picture2. Picture=Source. PictureIf State=1 ThenForm16. Caption=拖放;Picture2. Picture=LoadPicture()FalseForm16. Caption=这是&TypeName( Source)&控件End IfEnd Sub(4)运行结果如图5-6所示。上一页下一页返回任务2 键盘的控制 5)Parent属性 控件作为参数Source传递给过程后,Source就继承了控件的属性和方法,包括控件的Parent属性,即控件所在的窗体,因而可对控

25、件所在的窗体进行各种操作。如上面程序中的语句: Forml6. Caption=拖放 Forml6. Caption=这是&TypeName( Source)& 控件 可改为: Source. Parent. Caption=拖放 Source. Parent. Caption=这是&TypeName( Source)&控件上一页下一页返回任务2 键盘的控制 【例5一4】跳棋游戏。 要求:如图5 -7和图5-8所示,红绿两种颜色的棋子(每种棋子的数量相等,可以同时增减),要经过空格(白格)交换位置,当不同颜色的两个棋子相邻时,可以通过相邻的棋子跳到空格上,用最少的步数完成交换者胜。编程实现下棋

26、过程。 用标签数组来代表Label ( 0)Label ( 6)下棋时,首先要求发生DragDrop事件过程的控件必须是白色,然后根据以下情况进行处理: 被拖放的控件与发生DragDrop事件过程的控件相隔一个控件,且它们之间的控件与被拖放的控件具有不同的颜色,则允许两者交换颜色;上一页下一页返回任务2 键盘的控制被拖放的控件与发生DragDrop事件过程的控件相邻,则可以交换颜色。(1)界面设计。在工程中添加窗体Forml7,在窗体上添加一个标签控件数组。(2)属性设置。对象属性设置如表5一3所示。(3)代码编写如下:Private Sub Label1_DragDrop(Index As

27、Integer, Source As Control,X As Single,Y As SingleIf Label1(Index).BackColor=vbWhile ThenIf Abs( Source. Index-Index)=2 And Label1(Index+Source. Index) /2)BackColorSource. BackColor Then a=Label1(Index).BackColor Label1(Index).BackColor=Source. BackColor Source. BackColor=a上一页下一页返回任务2 键盘的控制End IfIfA

28、bs(Source.Index-Index)=1 Then a=Label1(Index).BackColor Label1(Index).BackColor=Source. BackColor Source. BackColor=aEnd IfEnd IfEnd Sub上一页下一页返回任务2 键盘的控制 2. OLE拖放 使用拖放可以将控件移动到其他地方。而采用OLE拖放,则可以将数据从一个控件或应用程序移动到另外的控件或应用程序中,如将写字板中的文本拖动到文本框中。“拖”数据由()LEDragMode属性控制,“放”数据由()LEDropMode属性控制。 OLEDragMode =0(

29、Mannual),默认的OLE拖动方式,即手工拖动。 OLEDragMode = 1( Automation),自动实现“拖”操作。 OLEDropMode =0( None),默认方式,不接受OLE“放”操作。 OLEDropMode = 1( Mannual),手工实现“放”操作。 OLEDropMode =2 (Automation),自动实现“放”操作。上一页下一页返回任务2 键盘的控制 注意: (1)在VB 6. 0中,文本框、图片框等控件完全支持自动()LE拖放,即不需要额外的编程。组合框,列表框等控件支持自动“拖”操作,而不支持自动“放”操作,它们的OLEDragMode属性不能

30、设置为2 (Automation),需要额外的编程才能实现“放”操作。 (2)除非在拖动的同时按住Ctrl键或通过代码修改控件的默认性能,向文本框拖放数据时,进行的是移动而不是复制操作。 (3)自动支持拖放操作有局限性。例如,如果将Word文档中的文本拖动到文本框控件中,则Word文档中的所有文本格式将消失,因为文本框控件支持这种格式。如果想要确定对象所支持的是哪种数据格式或拖放效果(复制、移动或不放);或者想从中拖放出数据的控件不支持自动拖放,可使用手工的OLE拖动操作。上一页下一页返回任务2 键盘的控制 (4)为了将DataObject对象中的数据放到目标部件中,应在目标部件的OLEDragDrop事件过程中使用GelData方法。 格式:.GclDala( Formal) 其中,Formal用于确定DataObject对象数据格式的VB 6. 0常数或值。如vbCFText表示文本文件,vbCFTBitmap表示.bmp文件。 【例5一5】拖动与复制。 要求:本例程序实现如下功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论