键盘与鼠标事件过程.ppt_第1页
键盘与鼠标事件过程.ppt_第2页
键盘与鼠标事件过程.ppt_第3页
键盘与鼠标事件过程.ppt_第4页
键盘与鼠标事件过程.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

第8章 鼠标与键盘事件过程,8.1鼠标事件,1.Click和DblClick事件,用户在单击鼠标左键时会触发Click事件;双击鼠标左键时会触发DblClick事件。这两个事件过程的语法格式如下: Private Sub 对象名_Click() 过程体 End Sub Private Sub 对象名_DblClick() 过程体 End Sub,2.MouseDown和MouseUp事件,MouseDown事件语法格式如下: Private Sub 对象名_MouseDown(Index As Integer,_ Button As Integer, Shift As Integer, X As Single, Y As Single) 过程体 End Sub MouseUp事件语法格式如下: Private Sub对象名_MouseUp(Index As Integer,Button As Integer,_ Shift As Integer, X As Single, Y As Single) 过程体 End Sub,图8-1 鼠标MouseDownMouseUp事件,例8-1 设计一个简单的应用程序,如图图8-1所示,在窗体上建立一个命令按钮,当运行时,在命令按钮内部按下鼠标左键,其标题会显示“按下状态”;松开鼠标左键时其会显示“松开状态”。,按下鼠标左键时,会发生MouseDown事件,要使得命令按钮的显示发生变化,必须编写命令按钮的MouseDown事件,代码如下 Private Sub Command1_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) Command1.Caption = “按下状态“ End Sub,松开鼠标左键时,会发生MouseUp事件,其代码编写如下: Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Command1.Caption = “松开状态“ End Sub,MouseMove事件语法格式如下: Private Sub 对象名_MouseMove(Button As Integer, Shift _ As Integer, X As Single, Y As Single) 过程体 End Sub,3. MouseMove事件,例8-2 设计一个程序,当鼠标在窗口内移动时,其移动轨迹也随之出现(如图8-2所示)。双击时,绘制过程完毕。,图8-2 鼠标移动轨迹效果,初始化步骤放在窗体的加载事件中完成: Private Sub Form_Load() a = 0 End Sub,这个题目可以使用鼠标的MouseMove和DblClick事件实现。首先,定义并初始化一个整型变量a用来辅助实现要求的功能。定义代码如下: Dim a As Integer,然后,编辑窗体的DblClick事件和MouseMove事件,具体实现如下: Private Sub Form_DblClick() a = 1 双击时不再绘制移动轨迹 End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If a = 0 Then PSet (X, Y) End If End Sub,8.2鼠标光标的形状,表8-3 MousePointer属性的取值及对应的鼠标光标形状,1MousePointer属性,2鼠标光标形状的使用,虽然鼠标光标的形状可以由MousePointer属性和MouseIcon属性相互 配合任意设置,但是,为了与Windows环境相适应,在开发应用程序 中应遵循以下几个主要规则: (1)表示用户可用的各种功能。如用“I”形状表示插入文本; 用“十”字形状表示画图状态或表示选择状态等。 (2)表示程序运行状态的可视线索。如沙漏形状表示程序忙等。 (3)当坐标(x,y)值为(0,0)时,改变鼠标光标形状。,8.3 鼠标的拖放,鼠标的拖放操作是经常使用的,拖放的一般过程是,把鼠标光标移到某一个控件对象上,按下鼠标左键不松,然后移动鼠标,这样对象将在屏幕上被拖动,松开鼠标键后,对象被放下。通常把原来位置的对象叫做源对象,而拖动到新位置后放下的对象叫做目标对象。,8.3.1与拖放有关的属性,1. DragMode属性 设置或返回拖动对象(源对象)的模式。取值有两个: 1(vbAutomatic)自动拖动模式。 0(vbManual) 人工(手动)拖动模式。此为默认的模式。,2.DragIcon属性 在拖动一个对象的过程中,并不是对象本身在移动,而是移动代表对象的图标。也就是说,一旦要拖动一个控件,这个控件就变成一个图标,等放下后再恢复成原来的控件。默认情况下,拖动时显示被拖对象的轮廓。通过Draglcon属性可以设置在拖动时作为被拖动控件的图标。该属性支持的图像文件可以是图标文件(.ico)或光标文件(.cur)。,8.3.2 与拖放有关的事件和方法,1.DragDrop事件 当用户将源对象拖到目标对象处之后,松开鼠标键时在目标对象上会产生一 个DragDrop事件。其事件过程语法格式如下: Private Sub对象名_DragDrop(Source As Control,X As Single,Y As Single) 过程体 End Sub,2.DragOver事件 当拖动某一对象(源对象)越过一个控件时,被越过的对 象(目标对象)就会产生DragOver事件。其事件过程语法格式如下: Private Sub 对象_DragOver(Source As Control,X As Single,Y As Single, _ State As Integer) 过程体 End Sub,3. Move方法 Move方法用来移动MDIForm、Form或控件的位置或改变对象的大小。其语法格式为: 对象名.Move Left, Top, Width, Height 其中,对象名为一个对象表达式,是控件的Name属性,缺省时指带焦点的窗体。Left参数是左上角的水平坐标;Top参数是左上角的垂直坐标;Width参数是对象的宽度值;Height参数是对象的高度值。,4.Drag方法 Drag方法用来启动或停止一个拖放过程。其语法格式为: 对象名.Drag 值 其中,“对象名”指被拖对象名;“值”为动作参数,有3个值可取: 0 (vbCancel):取消指定控件的拖动。 1 (vbBeginDrag):允许开始拖动。默认值。 2 (vbEndDrag):结束控件的拖动,并发出一个DragDrop事件。 注意:当参数设置为0和2时都可以停止拖动。但它们所不同的是,前者不触发DragDrop事件。,例8-3 在窗体上放置三个图像框Image控件,并按照表8-4所示设置好相关属性,效果如图8-3所示。,图8-3 鼠标拖放示例,表8-4 属性设置,首先,需要定义两个变量X,Y记录下文件夹图标的原来位置。然后,在窗体的加载事件中,完成记录过程,代码如下: Dim X As Integer, Y As Integer Private Sub Form_Load() X = Folder.Left Y = Folder.Top End Sub 开始拖动文件夹图标时,文件夹消失,拖动的图标变为另一个文稿图标。实现代码如下: Private Sub Folder_DragOver(Source As Control, X As Single,_ Y As Single,State As Integer) If State = 0 Then Source.Visible = False Cls End If End Sub,能在窗体上显示被拖动的文件夹图标的当前位置,实现代码如下: Private Sub Form_DragOver(Source As Control, X As Single, _ Y As Single,State As Integer) Cls Print “ Print “当前位置:“, “X:“, X, “Y:“, Y End Sub 单击窗体时文件夹图标恢复原来的状态,实现代码如下: Private Sub Form_Click() Folder.Left = X Folder.Top = Y Folder.Visible = True Cls Print “ Print “恢复原状“ End Sub,在窗体上放下文件夹图标时,文件夹在新的位置上显示, 实现代码如下: Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move X - Folder.Width 2, Y - Folder.Width 2 Folder.Visible = True Cls Print “ Print “移动对象“ End Sub,拖拽文件夹图标到记事本图标上时能运行记事本程序 以打开以文件夹图标名称命名的文件,实现代码如下: Private Sub Note_DragDrop(Source As Control, X As Single, Y As Single) Dim i As Single Cls Print “ Print “运行打开记事本窗口“ i = Shell(“C:Windowsnotepad.exe “ & Source.Name, 1) End Sub,拖拽文件夹图标到回收站图标上时,文件夹消失,窗口 提示“删除对象”,实现代码如下: Private Sub Recycle_DragDrop(Source As Control, X As Single, Y As Single) Cls Print “ Print “删除对象“ End Sub,8.4键盘事件,在程序运行过程中,当按下并释放键盘上的一个ASCII字符键时,就会触发拥有输入焦点的那个控件的KeyPress事件。 KeyPress事件过程语法格式如下: Private Sub Form|控件名_KeyPress(Index As Integer,KeyAscii _ As Integer) 过程体 End Sub,8.4.1 KeyPress事件,例8-4创建登录窗体。要求程序运行后,“用户名”只能由大写字母组成,如果输入为小写字母则自动转换为大写字母;“口令”只能由数字字符(09)组成,输入用户名回车后将焦点移到“口令”框;如果输入不合法则响铃。运行后的效果如图8-4所示。,图8-4 登录窗体,与按键有关的核心代码如下: Private Sub Text1_KeyPress(KeyAscii As Integer) If Not (KeyAscii = 65 And KeyAscii = 97 And KeyAscii _ 57 Then Beep KeyAscii = 0 End If End Sub,8.4.2 KeyDown和KeyUp事件 和KeyPress事件一样,KeyDown 和 KeyUp事件可用于窗体、复选框、组合框、命令按钮、列表框、图片框、文本框、滚动条及与文件相关的控件。KeyDown事件是在按下键盘某个键时触发的事件;KeyUp事件则是在松开某个键时发生的事件。,KeyDown事件和KeyUp事件的语法格式如下: Private Sub 对象名_KeyDown(Index As Integer,KeyCode As Integer, Shift _ As Integer) 过程体 End Sub Private Sub 对象名_ KeyUp(Index As Integer,KeyCode As Integer, Shift _ As Integer) 过程体 End Sub,例8-5新建一个工程,将用户所按过的键的KeyCode值显示出来;另外,只要用户按下Ctrl和C键,则窗体关闭。,添加窗体的事件过程,其代码如下:

温馨提示

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

评论

0/150

提交评论