




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章鼠标与键盘事件过程,8.1鼠标事件,1.Click和DblClick事件,用户在单击鼠标左键时会触发Click事件;双击鼠标左键时会触发DblClick事件。这两个事件过程的语法格式如下:PrivateSub对象名_Click()过程体EndSubPrivateSub对象名_DblClick()过程体EndSub,2.MouseDown和MouseUp事件,MouseDown事件语法格式如下:PrivateSub对象名_MouseDown(IndexAsInteger,_ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)过程体EndSubMouseUp事件语法格式如下:PrivateSub对象名_MouseUp(IndexAsInteger,ButtonAsInteger,_ShiftAsInteger,XAsSingle,YAsSingle)过程体EndSub,图8-1鼠标MouseDownMouseUp事件,例8-1设计一个简单的应用程序,如图图8-1所示,在窗体上建立一个命令按钮,当运行时,在命令按钮内部按下鼠标左键,其标题会显示“按下状态”;松开鼠标左键时其会显示“松开状态”。,按下鼠标左键时,会发生MouseDown事件,要使得命令按钮的显示发生变化,必须编写命令按钮的MouseDown事件,代码如下PrivateSubCommand1_MouseDown(ButtonAsInteger,_ShiftAsInteger,XAsSingle,YAsSingle)Command1.Caption=按下状态EndSub,松开鼠标左键时,会发生MouseUp事件,其代码编写如下:PrivateSubCommand1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Command1.Caption=松开状态EndSub,MouseMove事件语法格式如下:PrivateSub对象名_MouseMove(ButtonAsInteger,Shift_AsInteger,XAsSingle,YAsSingle)过程体EndSub,3.MouseMove事件,例8-2设计一个程序,当鼠标在窗口内移动时,其移动轨迹也随之出现(如图8-2所示)。双击时,绘制过程完毕。,图8-2鼠标移动轨迹效果,初始化步骤放在窗体的加载事件中完成:PrivateSubForm_Load()a=0EndSub,这个题目可以使用鼠标的MouseMove和DblClick事件实现。首先,定义并初始化一个整型变量a用来辅助实现要求的功能。定义代码如下:DimaAsInteger,然后,编辑窗体的DblClick事件和MouseMove事件,具体实现如下:PrivateSubForm_DblClick()a=1双击时不再绘制移动轨迹EndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)Ifa=0ThenPSet(X,Y)EndIfEndSub,8.2鼠标光标的形状,表8-3MousePointer属性的取值及对应的鼠标光标形状,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事件。其事件过程语法格式如下:PrivateSub对象名_DragDrop(SourceAsControl,XAsSingle,YAsSingle)过程体EndSub,2.DragOver事件当拖动某一对象(源对象)越过一个控件时,被越过的对象(目标对象)就会产生DragOver事件。其事件过程语法格式如下:PrivateSub对象_DragOver(SourceAsControl,XAsSingle,YAsSingle,_StateAsInteger)过程体EndSub,3.Move方法Move方法用来移动MDIForm、Form或控件的位置或改变对象的大小。其语法格式为:对象名.MoveLeft,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记录下文件夹图标的原来位置。然后,在窗体的加载事件中,完成记录过程,代码如下:DimXAsInteger,YAsIntegerPrivateSubForm_Load()X=Folder.LeftY=Folder.TopEndSub开始拖动文件夹图标时,文件夹消失,拖动的图标变为另一个文稿图标。实现代码如下:PrivateSubFolder_DragOver(SourceAsControl,XAsSingle,_YAsSingle,StateAsInteger)IfState=0ThenSource.Visible=FalseClsEndIfEndSub,能在窗体上显示被拖动的文件夹图标的当前位置,实现代码如下:PrivateSubForm_DragOver(SourceAsControl,XAsSingle,_YAsSingle,StateAsInteger)ClsPrintPrint当前位置:,X:,X,Y:,YEndSub单击窗体时文件夹图标恢复原来的状态,实现代码如下:PrivateSubForm_Click()Folder.Left=XFolder.Top=YFolder.Visible=TrueClsPrintPrint恢复原状EndSub,在窗体上放下文件夹图标时,文件夹在新的位置上显示,实现代码如下:PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)Source.MoveX-Folder.Width2,Y-Folder.Width2Folder.Visible=TrueClsPrintPrint移动对象EndSub,拖拽文件夹图标到记事本图标上时能运行记事本程序以打开以文件夹图标名称命名的文件,实现代码如下:PrivateSubNote_DragDrop(SourceAsControl,XAsSingle,YAsSingle)DimiAsSingleClsPrintPrint运行打开记事本窗口i=Shell(C:Windowsnotepad.exe&Source.Name,1)EndSub,拖拽文件夹图标到回收站图标上时,文件夹消失,窗口提示“删除对象”,实现代码如下:PrivateSubRecycle_DragDrop(SourceAsControl,XAsSingle,YAsSingle)ClsPrintPrint删除对象EndSub,8.4键盘事件,在程序运行过程中,当按下并释放键盘上的一个ASCII字符键时,就会触发拥有输入焦点的那个控件的KeyPress事件。KeyPress事件过程语法格式如下:PrivateSubForm|控件名_KeyPress(IndexAsInteger,KeyAscii_AsInteger)过程体EndSub,8.4.1KeyPress事件,例8-4创建登录窗体。要求程序运行后,“用户名”只能由大写字母组成,如果输入为小写字母则自动转换为大写字母;“口令”只能由数字字符(09)组成,输入用户名回车后将焦点移到“口令”框;如果输入不合法则响铃。运行后的效果如图8-4所示。,图8-4登录窗体,与按键有关的核心代码如下:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfNot(KeyAscii=65AndKeyAscii=97AndKeyAscii_57ThenBeepKeyAscii=0EndIfEndSub,8.4.2KeyDown和KeyUp事件和KeyPress事件一样,KeyDown和KeyUp事件可用于窗体、复选框、组合框、命令按钮、列表框、图片框、文本框、滚动条及与文件相关的控件。KeyDown事件是在按下键盘某个键时触发的事件;KeyUp事件则是在松开某个键时发生的事件。,KeyDown事件和KeyUp事件的语法格式如下:PrivateSub对象名_KeyDown(IndexAsInteger,KeyCodeAsInteger,Shift_AsInteger)过程体EndSubPrivateSub对象名_KeyUp(IndexAsInteger,KeyCodeAsInteger,Shift_AsInteger)过程体EndSub,例8-5新建一个工程,将用户所按过的键的KeyCode值显示出来;另外,只要用户按下Ctrl和C键,则窗体关闭。,添加窗体的事件过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学语文常见的反义词总结
- 中国联通海东市2025秋招市场与服务类专业追问清单及参考回答
- 行政岗位考试试题及答案
- 中国广电常德市2025秋招笔试行测题库及答案网络优化与维护类
- 武威市中石化2025秋招笔试模拟题含答案油品分析质检岗
- 中国广电聊城市2025秋招笔试行测题库及答案行业解决方案经理岗
- 亳州市中石化2025秋招面试半结构化模拟题及答案新材料与新能源岗
- 大唐电力安庆市2025秋招采矿工程专业面试追问及参考回答
- 驻马店市中石油2025秋招面试半结构化模拟题及答案炼化装置操作岗
- 大庆市中石油2025秋招面试半结构化模拟题及答案炼化装置操作岗
- 幼儿园获奖公开课:中班语言《顽皮的小雨滴》课件
- PPD接种培训课件
- 人教版中职数学拓展模块一:3.2.1向量的加法课件(共21张课件)
- 宫外孕大出血护理
- 2025年中国华能集团公司招聘笔试参考题库含答案解析
- 《纳米陶瓷微珠保温隔热系统应用技术规程》
- 皮纹分析师培训
- 起重机械操作规程(4篇)
- 初级关务水平测试题库500题(含答案)
- 医疗设备应急管理与替代程序
- DB62-T 4913.1-2024温室气体排放核算方法与报告指南 第1部分:污水处理厂
评论
0/150
提交评论