北京电大VisualBasic程序设计第4章VB高级语言技巧

上传人:宝路 文档编号:47223300 上传时间:2018-07-01 格式:PPT 页数:98 大小:1.04MB
返回 下载 相关 举报
北京电大VisualBasic程序设计第4章VB高级语言技巧_第1页
第1页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧_第2页
第2页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧_第3页
第3页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧_第4页
第4页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《北京电大VisualBasic程序设计第4章VB高级语言技巧》由会员分享,可在线阅读,更多相关《北京电大VisualBasic程序设计第4章VB高级语言技巧(98页珍藏版)》请在金锄头文库上搜索。

1、Visual Basic 程序设计第第 4 4 章章 VBVB高级语言技巧高级语言技巧14.1 多功能计算器任务 4.1.1 任务描述在第三章简单计算器的基础,增加以下功能:1. 将计算结果转换为十六进制。2. 就数字键设置为命令按钮组,使“0”“9” 数字按键的Index属性分别为0、1、2、3、4、5 、6、7、8、9。3.禁止键盘在文本框中输入数据。4.使计算器总是悬浮在其它窗体上。界面如下页所示。234.1.2 界面设计1. 添加“十六进制”和“数字大写”两个文本框,分 别命名为txtHex和txtBig。 2.删除原来的“0”“9”数字按钮控件,并重新放置 一个命令按钮控件,将其Ca

2、ption属性设置为“0” 。 3.复制该数字命令按钮。 4.在数字区框架控件上,粘贴该数字命令按钮,系统询 问是否创建一个控件数组,回答“是”。将它的 Caption属性改为“1”,Index属性值设置为1。按照上述方法粘贴数字按钮控件“2”“9”。 5、此时得到一 个按钮控件数组“0”“9”,它们的 Index书香依次为“0”“9”。 6、将TxtBig的ToolTipText属性设置为“大写数字”。44.1.3 代码设计1.用API函数实现“总在前面”效果 (1)程序代码 在代码编辑器的“通用”部分声明SetWindowPos函数及相 关常数: Private Declare Funct

3、ion SetWindowPos Lib “user32“ _(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _ByVal x As Long, ByVal y As Long, ByVal cx As Long, _ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Const HWND_TOPMOST = -1Private Const SWP_NOMOVE = x,”y=”;y End SubPrivate Sub Form_Click()Dim a As IntegerDi

4、m b As Integera=3:b=4Change a,bPrint “a=”;a,”b=”;b End Sub(演示)运行结果: x=4,y=3 A=4,b=3 我们发现,调用 Change过程后, 实际参数a,b的 值也发生了变化。 这就是引用传递 参数的执行结果。532. 按值传递参数按值传递参数是只把参数的数值传递给过程,也称传值方式 。即传递给过程的只是实际参数的副本,即使过程调用时 改变了形式参数的值,实际参数也不会改变。 如果按值传递参数,需要在定义过程时在形式参数前面加是 G关键字ByVal,例如上例中: Private Sub Change(ByVal x As Inte

5、ger,ByVal y As Integer) Dim t As Integert=xx=yy=t在窗体是输出结果Print “x=”;x,”y=”;y End Sub运行结果: x=4,y=3 a=3,b=4544.4 键盘和鼠标使用技巧驱动VB应用程序运行的主要动力是 事件响应。在VB响应的所有事件中,数目 最多也最重要的是对键盘和鼠标的响应事 件,因为键盘和鼠标是用户和应用程序交 互的主要工具。下面系统介绍鼠标和键盘 常用事件的使用技巧和原理。55习题 P116 三、问答题2. 简述参数传递机制。答:VB中参数传递机制有两种:一种是引用参数传递 (默认),另一种是按值传递参数。引用参数传

6、递是将参数变量的内存地址传递给 Sub或Function过程,过程通过内存地址访问实际参 数的内容,从而可以方便地改变实际参数的值。按值传递参数是只把参数的数值传递给过程, 也称传值方式。即传递给过程的只是实际参数的副 本,即使过程调用时改变了形式参数的值,实际参 数也不会改变。如果按值传递参数,需要在定义过 程时在形式参数前面加是G关键字ByVal。564.4.1 响应键盘事件常用的键盘事件主要有KeyPress,KeyUp 和KeyDown。 KeyPress事件:用户按下某ASCII字符的 键,因此它不是对所有的键盘码均响应 ,比如键盘上的删除键。 KeyDown和KeyUp事件:按下或

7、释放键 盘上的任意键时均会触发该事件,包括 Delete删除键。571. 焦点处理窗体或控件(对象)的焦点是对象活 动的标志,在Windows应用中,可以同时 运行几个应用程序,但只有具有焦点的应 用程序才有活动标题栏,才能接受用户输 入。在同一窗体中,也只有具有焦点的的 TextBox文本框才能接受键盘输入。总之 只有获得焦点的窗体或控件才能接受键盘 事件。所以在处理键盘事件嵌,应首先对 焦点进行处理。 58实现控件焦点的两种方法(1)SetFocus方法在程序运行时,通过鼠标选择操作或控 件的SetFocus方法实现。VB所提供的标准控件一般都有一个 SetFocus方法。通过该方法可以把

8、焦点赋予 指定的控件,是一种灵活的焦点控制方法 。比如希望在程序运行期的某个阶段,使 某个控件后得焦点被激活,可使用以下代 码:控件名.SeFocus59实现控件焦点的两种方法(2)利用Tab控制键VB所有可被设置焦点的控件均具有一个 TabIndex属性。默认情况些,在窗体上创建的第 一个控件的TabIndex的值为0,第一个控件的 TabIndex的值为1,移此类推。可按预先设计好 的顺序,改变控件的TabIndex的值。这样就可以 在程序运行期间,通过Tab键使焦点按TabIndex 的值,从小到大在众多控件中切换。如果不希望使某些控件获得焦点,就可以把 该控件的TabStop属性值设置

9、为False。当然,如 果控件不可视(Visible=False)或不可用( Enabled=False),也不可能获得焦点了。60习题 P116 二、填空题3. 如果不希望某个控件获得焦点,则可以将它的 属性设置为False。答案:TabStop61习题 P116 三、问答题4. 什么是焦点,设置控件焦点有哪些方法 ?答:窗体或控件(对象)的焦点是对象活 动的标志,只有获得焦点的窗体或控件 才能接受键盘事件。设置控件焦点的两种方法:SetFocus方法:控件名.SeFocus按预先设计好的顺序,改变控件的 TabIndex的值。 622. 窗体的键盘事件如果希望无论何时按下某个键,都会同时

10、执行同一操作,而不管此时到底哪个控件具有焦点的话,就可以使用窗体的键 盘事件。具体方法是:首先将窗体的 KeyPreview属性设置为True,然后再编 写相应的键盘事件处理程序。631. KeyDown和KeyUp事件分析计算机键盘上的每一个键均有一个键码, 称为键码。KeyCode参数返回了键盘的键码值 。通过它判断用户按下哪个键。既可以用数字 也可以利用VB提供的键码常数进行判断处理, 比如vbKeyF1(F1键)、vbKeyHome(Home键) 、vbKeyA(A和a键)等。例如:If KeyCode = vbKeyBack ThenIf KeyCode = vbKeyDelete

11、Then64(2)Shift参数通过该参数判断用户是否按下了Shift、 Ctrl或Alt键。例如:If Shift = vbShiftMask ThenIf Shift = vbCtrlMask ThenIf Shift = vbAlttMask ThenIf (Shift = vbAltMask) And (Key Code= VbKeyA) Then653. KeyPress事件KeyPress事件发生于KeyDown和KeyUp之间,它只有一个 KeyAscii参数,反映了用户通过键盘输入的字符的 ASCII码。 当需要处理标准ASCII字符时可使用这个事件,但要处 理扩展字符键、组合

12、键和定位键时,则只能使用 KeyDown和KeyUp事件。例如: Private Sub Text1_KeyPress(Index As Integer,KeyAscii As Integer) 只允许输入数字,其中用到的数字48和57分别表示字 符0和9的ASCII码If(KeyAscii57) ThenKeyAscii= 0End If End Sub 66常用键盘码与ASCII码的对应关系按键键键码键码 常数ASCII码码数字是否相等 BackSpacevbKeyBack8是 EntervbKeyReturn13是 SpacevbKeySpace33是 TabvbKeyTab9是 Esc

13、vbKeyEscape27是AZvbKeyAvbKeyZ6590是 azvbKeyAvbKeyZ97122否 .vbKeyDecimal46否09vbKey0vbKey94857是DeletevbKeyDeleteF1!F16vbKeyF1 vbKeyF16键码未必都有对应的ASCII码。A和a的ASCII码不同,但它 们在键盘上是一个按键,因此键码是一样的。 67习题 P116 一、单项选择题5. 键盘事件的执行顺序是( )。 A. KeyPress,KeyDown,KeyUp B. KeyDown,KeyPress,KeyUp C. KeyUp,KeyDown,KeyPress D. Ke

14、yUp,KeyPress,KeyDown答案:B68习题 P116 四、程序设计题2. 键盘按键程序。请使用MsgBox过程对窗体的 KeyDown和KeyPress事件编程,以显示按下、 放开一个键时事件的发生过程。比如,当按 下了A键时程序界面如图所示。69代码设计:Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)MsgBox “KeyDown事件发生了,KeyCode的值是:“ _& KeyCode & Chr(13) & _“Shift参数的值是:“ & Shift, 0, “键盘按键程序“ End SubP

15、rivate Sub Text1_KeyPress(KeyAscii As Integer)MsgBox “KeyPress事件发生了,KeyAscii的值是:“ _& KeyAscii, 0, “键盘按键程序“ End SubPrivate Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)MsgBox “KeyUp事件发生了,KeyCode的值是:“ _& KeyCode & Chr(13) & _“Shift参数的值是:“ & Shift, 0, “键盘按键程序“ End Sub(演示)704. SendKeys过程利用SendKe

16、ys可以将一个或多按键消息 发送到湖动窗口,就如同在键盘上湿润 一样。比如:SendKeys “Tab”SendKeys “A 10”SendKeys “Enter”SendKeys “Left 3”SendKeys “F1”SendKeys “CapsLock”71例:在所示界面中,为了加快用户的输入速度,希望每 当用户按完回车键后,控制焦点自动移到下一个,就可 以在文本框控件数组中加入以下代码:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenSendKeys “tab“End If End Sub72Private Sub Text2_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenSendKeys “tab“End If End SubPrivate Sub Text3

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号