欢迎来到天天文库
浏览记录
ID:42317064
大小:376.01 KB
页数:25页
时间:2019-09-12
《键盘与鼠标事件过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、9.1KeyPress事件9.2KeyDown和KeyUP事件9.3鼠标事件9.4鼠标光标9.5拖放第9章键盘与鼠标事件过程(2学时)9.1KeyPress事件KeyPress事件的语法如下:SubForm_KeyPress(KeyAsciiAsInteger)Subobject_KeyPress([indexAsInteger,]KeyAsciiAsInteger)参数说明:Object为可以产生KeyPress事件的对象;Index是一个整数,用来唯一标识一个在控件数组中的控件;KeyAscii用于返回一个标准ANSI键的ASCII码。KeyAscii通过引用传递,对它进行改变可给
2、对象发送一个不同的字符,将KeyAscii改变为0时可取消击键,这样—来对象便接收不到所按键的字符。关于KeyPress事件,要特别强调的就是下列两点:(1)KeyAscii参数与后面的KeyDown和KeyUp事件中的KeyCode参数解释是有区别的。(2)如果KeyPreview属性被设置为True,窗体将先于该窗体上的控件接收此事件;如果KeyPreview属性被设置为False,则窗体将不能接收该事件。KeyPreview的默认值是False,KeyPreview属性可用来创建全局键盘处理例程。例9-1将输入到文本框Text1的文本转换为大写,并将输入的原始字符显示在Text2
3、中。程序运行结果如图9-1所示。OptionExplicitDimStr1AsStringPrivateSubText1_KeyPress(KeyAsciiAsInteger)Str1=Chr(KeyAscii)'将按键的ASCII值转换为字符KeyAscii=Asc(UCase(Str1))'将字符转换为大写,并重置Text1的字符Text2.Text=Text2.Text&Str1'将输入的原始字符复制到Text2中EndSub例9-1KeyPress的用法例如,数字的ASCII码是在48~57范围,下列事件处理只允许用户在文本框中输入数字(非数字字符被抑制):PrivateSub
4、Text1_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48OrKeyAscii>57Then'输入为非数字字符KeyAscii=0'抑制非数字字符的输入EndIfEndSub在该事件处理过程中,就是对数字以外的字符进行拦截,将其KeyAscii参数更改为0,使控件最后接收到的是KeyAscii=0的字符(空字符,但不是空格字符),这样就抑制了那些字符的输入。9.2KeyDown和KeyUP事件KeyDown事件过程SubForm_KeyDown(keycodeAsInteger,shiftAsInteger)Subobject_KeyDown([ind
5、exAsInteger,]keycodeAsInteger,shiftAsInteger)KeyUp事件过程SubForm_KeyUp(keycodeAsInteger,shiftAsInteger)Subobject_KeyUp([indexAsInteger,]keycodeAsInteger,shiftAsInteger)参数说明Index:是一个整数,它用来唯一标识一个在控件数组中的控件。KeyCode:是一个键的扫描码,可以用诸如vbKeyFl(F1键)的系统常量表示,它的值只与按键在键盘上的物理位置有关,与键盘的大小写状态无关;如果按的是两个以上的组合键,KeyCode将先
6、后得到所有这些不同物理位置键的扫描码。Shift:参数是一个3位二进制的整数,标明在该事件发生时是否还同时按了Shift、Ctrl和Alt这三个控制键。Shift参数的表达与含义见下面表9-1。KeyPressKeyDown和KeyUp事件发生的时间输入一个ASCII字符按任意一个键参数值KeyAscii接收到字符的ASCII值KeyCode接收到键的扫描码按Shift+A时事件发生的次数事件发生一次(只由键状态决定)事件发生两次和2位置(键盘处于大写状态)按Shift+A时参数值KeyAscii=97第一次KeyCode=17第二次KeyCode=65(键盘
7、处于小写状态)按Shift+A时参数值KeyAscii=65第一次KeyCode=17第二次KeyCode=65KeyPress与KeyDown、KeyUp的区别:窗体的:KeyPressKeyDownKeyUp控件的:KeyPressKeyDownKeyUp窗体的KeyPreview为True焦点在控件上输入SubForm_KeyPress(KeyAsciiAsInteger)KeyAscii=KeyAscii+1EndSubSubText1
此文档下载收益归作者所有