




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十章键盘与鼠标事件过程,第一节KeyPress事件,第一节KeyPress事件,当压下键盘上的某个键时,将发生KeyPress事件。,注意:当一个控件或窗体拥有输入焦点时,该控件或窗体将接收从键盘上输入的信息。,KeyPress事件中的参数IndexAsInteger只用于控件组;KeyAsciiAsInteger用于单个控件。,利用KeyPress事件可以对输入的值进行限制。,用KeyPress可以捕捉击键动作。,在默认情况下,控件的键盘事件优先于窗体的键盘事件,因此在发生键盘事件时,总是先激活控件的键盘事件。,PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii57ThenBeepKeyAscii=0EndIfEndSub,PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenPrintText1.TextEndIfKeyAscii=0避免输入的字符在文本框中回显EndSub,例10.1编写口令程序。用文本框的PassWord属性编写过口令程序,下面的口令程序是用KeyPress事件编写的。,第二节KeyDown和KeyUp事件,当按下键盘上的某个键时,将发生KeyDown事件;而当松开某个键时,将发生KeyUp事件。,KeyDown和KeyUp事件的参数有两种形式,IndexAsInteger只用于控件组;KeyCodeAsInteger,ShiftAsInteger用于单个控件。,1.KeyCode,按键的实际的ASCII码。该码以“键”为准,而不是以“字符”为准。,说明:大小写字母用同一个键,它们的KeyCode相同(使用大写字母的ASCII码),但大键盘上的数字键与数字键盘上相同的数字键的KeyCode是不一样的。对于有上档字符和下档字符的键,其KeyCode为下档字符的ASCII码。,2.Shift,转换键。它指的是3个转换键的状态,包括Shift、Ctrl和Alt,这3个键分别以二进制方式表示,每个键用3位,即Shift键为001,Ctrl键为010,Alt键为100。,利用逻辑符And可以判断是否按下了某个转换键。3个符号常量:ConstShift=1ConstCtrl=2ConstAlt=4,如果ShiftAndShift0则按下了Shift键如果ShiftAndCtrl0则按下了Ctrl键如果ShiftAndAlt0则按下了Alt键,对于某个对象来说,当发生某个键盘事件时,只要通过传送KeyCode和Shift参数调用键盘处理程序就可以了。,PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)ConstAlt=4ConstKey_F2=&H71ShiftDown%=(ShiftAndShift)0AltDown%=(ShiftAndAlt)0F2Down%=(KeyCode=Key_F2)IfAltDown%AndF2Down%ThenText1.Text=AAAAAAEndIfEndSub,例10.2编写一个程序,当按下键盘上的某个键时,输出该键的KeyCode码。,例10.3编写程序,演示KeyDown和KeyUp的功能。,例10.4编写程序,当按下转换键和功能键时,输出相应的信息。,例10.5编写程序,通过键盘移动滚动条上的滚动框,并显示移动情况。,第三节鼠标事件,压下鼠标键时,将触发MouseDown事件;松开鼠标键时,将触发MouseUp事件;移动鼠标光标时,将触发MouseMove事件。,一、鼠标位置,格式:Sub对象_事件(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,“对象”可以是窗体或控件,“事件”可以是MouseDown、MouseUp或MouseMove。鼠标位置由参数x、y确定。,二、鼠标键,鼠标键状态由参数Button来设定,该参数是一个整数(16位),在设置键状态时实际上只使用了低3位。当按下某个键时,相应的位被置1,否则为0。,说明:MouseDown、MouseUp事件,只能用鼠标的按键参数判断是否按下或松开某一个键,不能检查两个键同时按下或松开。MouseMove事件可以通过Button参数判断按下一个或同时按下两个、三个键。在判断是否按下多个键时,要注意避免二义性。为提高可读性,可把3个键定义为符号常量。,例10.6用鼠标事件在窗体上画圆。,例10.7编写程序,在窗体上画圆。要求:按着右键移动鼠标,则可画圆;否则不能画圆。,三、转换参数(Shift),和参数Button一样,转换参数Shift也是一个整数值,并用其低3位表示Shift、Ctrl和Alt键的状态,其中最低位表示按下Shift键(001,十进制数1),右数第二位表示按下Ctrl键(010,十进制数2),第三位表示按下Alt键(100,十进制数4)。,注意:某键被按下使得一个二进制位被设置。当按下某个键时,相应的位被置1,否则为0。Shift参数反映了当按下指定的鼠标键时,键盘上转换键(Shift、Ctrl和Alt)的当前状态。可以把Shift参数和Button参数结合起来进行测试。,例10.8Shift参数和Button参数测试程序。,例10.9在图片框中画一个箭头,当在图片框内移动鼠标时,箭头会随着鼠标光标的移动而改变方向。,第四节鼠标光标的形状,一、MousePointer属性,鼠标光标的形状通过MousePointer属性来设置。该属性可以在属性窗口中设置,也可以在程序代码中设置。,MousePointer的属性是一个整数,可以取015的值,当某个对象的MousePointer属性被设置为某个值时,鼠标光标在该对象内就以相应的形状显示。,1.在程序代码中设置MousePointer属性,二、设置鼠标光标形状,格式:对象.MousePointer=设置值,“对象”可以是复选框、组合框、命令按钮、目录列表框、驱动器列表框、文件列表框、窗体、框架、图像、标签、列表框、图片框、滚动条、文本框、屏幕等。,“设置值”是015的一个值。,2.在属性窗口中设置MousePointer属性,单击属性窗口中的MousePointer属性条,然后单击设置框右端向下的箭头,将下拉显示MousePointer的15个属性值。,例10.10编写程序,显示鼠标光标的形状。,PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.MousePointer=11EndSub,3.自定义鼠标光标,如果把MousePointer属性设置为99,则可通过MouseIcon属性定义自己的鼠标光标。,(1)如果在属性窗口中定义,可首先选择所需要的对象,再把MousePointer属性设置为“99-Custom”,然后设置MouseIcon属性,把一个图标文件赋给该属性(与设置Picture属性的方法相同)。,(2)如果用程序代码设置,则可先把MousePointer属性设置为99,然后再用LoadPicture函数把一个图标文件赋给MouseIcon属性。,4.鼠标光标形状的使用,在Windows中,鼠标光标的应用有一些约定俗成的规则。为了与Windows环境相适应,在应用程序中应遵守这些规则。,注:表示用户当前可用的功能。表示程序状态的用户可视线索。当坐标(X、Y)值为0时,改变鼠标光标形状。,第五节拖放,按下鼠标键,不要松开,然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,松开鼠标键后,对象即被放下。,一、与拖放有关的属性、事件和方法,1.属性,(1)DragMode属性:该属性用来设置自动(1)或手动(0)拖放模式。(2)DragIcon属性:在拖动一个控件时,这个控件变成一个图标,等放下后再恢复成原来的控件。,2.事件,与拖放有关的事件是DragDrop和DragOver。把控件(图标)拖到目标对象之后,如果松开鼠标键,则产生一个DragDrop事件。DragOver事件用于图标的移动。当拖动对象越过一个控件时,产生DragOver事件。,3.方法,按下鼠标键,不要松开,然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,松开鼠标键后,对象即被放下。,拖放有关的方法有Move和Drag。Drag方法的格式为:控件.Drag整数,注意:不管控件的DragMode属性如何设置,都可以用Drag方法来人工地启动或停止一个拖放过程。“整数”的取值为0、1或2,其含义分别为取消拖放、允许拖放或结束拖放。,上述事件具有相同的参数:,X、Y坐标(不是屏幕的绝对坐标,而是相对控件的坐标),鼠标按钮的状态(左、中、右等),控制键的状态(Shift、Ctrl、Alt),二、自动拖放,在程序代码窗口中的“对象”框中选择“Form”,在“过程”框中选择DragDrop,编写Form_DragDrop事件过程,将源对象移到鼠标光标(x,y)处。,1.步骤:,在窗体上画一个控件,例如图片框,并用DragIcon属性装入一个图标文件。,在属性窗口中找到DragMode属性,将其值设置为“1-Automatic”。,例1:,2.实现的方法:,在设计阶段,不要用Picture属性装入图象,而是用DragIcon属性装入图象,方法与Picture类似。,在执行阶段,通过程序代码设置DragIcon属性。,例10.11在窗体上建立两个控件,拖拉其中一个控件,当把它放到第二个控件上时,该控件消失,单击窗体后再度出现。,按照拖放要求,拖动过程中应把控件变成图标,放下时再恢复为控件。,例2:,三、手动拖放,1.步骤:,在窗体上建立一个图片框,装入一个图标(例如Phone02.ico)。,设置图片框的DragIcon属性。,PrivateSubForm_Load()Picture1.DragIcon=Picture1.PictureEndSub,用MouseDown事件过程打开拖拉开关。,PrivateSubPicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.Drag1EndSub,关闭拖拉开关,停止拖拉,并产生DragDrop事件。,编写DragDrop事件过程。,PrivateSubPicture1_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)Picture1.Drag2EndSub,PrivateSubForm_DragDrop(SourceAsControl,XAsSingle,YAsSingle)Source.Move(X-Source.Width/2),(Y-Source.Height/2)EndSub,例10.12用手动拖放模拟文件操作:从文件夹中取出文件,放入文件柜中,在放入前,先打开文件柜的抽屉,放入后再关上。,压下鼠标键事件过程,SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,松开鼠标键事件过程,SubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)EndSub,移动鼠标光标事件过程,SubForm_MouseMove(B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 11452-1:2025 EN Road vehicles - Component test methods for electrical disturbances from narrowband radiated electromagnetic energy - Part 1: General principles and termi
- 2020-2025年安全员之B证(项目负责人)全真模拟考试试卷A卷含答案
- 企业审计实务教学课件
- 第四节产品的包装与储运PackingStoringandT
- 叙事作文教学课件
- Brand KPIs for milk:Milky Mist in India-英文培训课件2025
- 口腔种植学介绍课件教案
- 小学生科普课程课件
- 2025年初中科学教师课程标准考试测试卷及答案
- 2025年新初二英语人教新版学困生专题复习《连词成句》
- 2025年北京市中考数学真题试卷及答案
- 软件项目需求调研报告样例
- 硬笔书法全册教案共20课时
- 模切品质培训
- 深圳市公安局招聘警务辅助人员笔试真题2024
- 会展销售培训
- 2025年安徽省中考数学试卷真题(含标准答案及解析)
- 政府采购法律法规及操作实务
- CJ/T 409-2012玻璃钢化粪池技术要求
- 中国慢性髓性白血病诊疗指南更新
- 消防跑点培训材料
评论
0/150
提交评论