收藏 分享(赏)

北京电大VisualBasic程序设计第4章VB高级语言技巧PPT课件..ppt

上传人:Facebook 文档编号:3835509 上传时间:2018-11-20 格式:PPT 页数:98 大小:1.04MB
下载 相关 举报
北京电大VisualBasic程序设计第4章VB高级语言技巧PPT课件..ppt_第1页
第1页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧PPT课件..ppt_第2页
第2页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧PPT课件..ppt_第3页
第3页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧PPT课件..ppt_第4页
第4页 / 共98页
北京电大VisualBasic程序设计第4章VB高级语言技巧PPT课件..ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

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

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

3、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 = &H2Private Const SWP_NOSIZE = &H1 然后在Form的Load事件中加入以下代码: SetWi

4、ndowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE,6,(1)API函数调用的一般方法,要在VB中使用API函数,首先要在工程的标准模块(Module)或窗体的代码的“通用”部分中声明它,然后可以按照调用VB其它函数一样来使用它。获得函数声明的一般方法: 在安装VB系统后,通常会在VB程序组中看到“API文本浏览器”的应用程序。 步骤如下:沿开始-程序-Microsoft Visual Studio 6.0-Microfoft Viaual Stodio 6.0 Tools-API Text Wiewer找到API浏

5、览器。,7,8,第1步:启动“API文本浏览器”,9,10,第2步:选择“文件-加载文本文件”菜单项,11,加载WinAPI.txt文件。,12,第3步:选择API类型:声明,13,第4步:选择立刻用项SetWindowPos,将声明范围设置为“私有”。,14,按添加按钮。,15,第5步:就选定项下的VB代码复制,16,第5步:将复制的VB代码粘贴到窗体代码编辑器中的“通用-声明”部分。,17,习题 P115 一、单项选择题,2. 能够实现“窗体总在最前端”界面效果的API函数是( )。 A. SetWindowPos B. SetWindowAPI C. SetWindowShape D.

6、DeclareAPI 答案:A,18,2. 数字区命令按钮的Click事件,Private Sub Command1_Click(Index As Integer)使用Str函数将Index转换为字符串,然后使用Trim函数去掉前后空格If txtLabel.Text = “ ThentxtFirst.Text = txtFirst.Text + Trim(Str(Index)ElsetxtSecond.Text = txtSecond.Text + Trim(Str(Index)End If End Sub,19,3. 禁止用户在文本框中输入数字,Private Sub txtResult_

7、KeyDown(KeyCode As Integer, Shift As Integer)KeyCode = 0 禁止所有的键盘输入(除BackSpace退格键外) End SubPrivate Sub txtResult_KeyPress(KeyAscii As Integer)KeyAscii = 0 禁止BackSpace退格键 End Sub,20,习题 P116 二、填空题,1. 通常可将文本框控件的 属性设置为True,以禁止键盘输入。 答案:Locked,21,4. 修改“计算结果”按钮的Click事件代码,“计算结果”命令按钮的Click事件 Private Sub Comma

8、nd17_Click()定义一个Double类型的变量Dim MyResult As Double以txtLable.Text的值为多重分支条件Select Case txtLabel.TextCase “+“ 当txtLabel.Text的值为“+“时MyResult = Val(txtFirst.Text) + Val(txtSecond.Text)Case “-“ 当txtLabel.Text的值为“-“时MyResult = Val(txtFirst.Text) - Val(txtSecond.Text)Case “ 当txtLabel.Text的值为“时MyResult = Val(

9、txtFirst.Text) * Val(txtSecond.Text)Case “ 当txtLabel.Text的值为“时MyResult = Val(txtFirst.Text) / Val(txtSecond.Text)End Select,22,4. 修改“计算结果”按钮的Click事件代码,txtResult.Text = MyResult 显示计算结果将计算结果转换为十六进制数字txtHex.Text = Hex(MyResult)将计算结果转换为大写数字,(采用函数功能完成)txtBig.Text = ChangeMe(MyResult) End Sub,23,5. 编写Chan

10、geMe函数代码,Private Function ChangeMe(First As Double) As String声明变量Dim strFirst As StringDim strBig(9) As String 声明一个字符串数组Dim strTemp As StringDim i, j As Integer设置数组变量的值strBig(0) = “零“: strBig(1) = “壹“: strBig(2) = “贰“: _strBig(3) = “叁“: strBig(4) = “肆“: strBig(5) = “伍“: _strBig(6) = “陆“: strBig(7) =

11、 “柒“: strBig(8) = “捌“: strBig(9) = “玖“,24,5. 编写ChangeMe函数代码,将Double型的参数First转换为字符串型strFirst = Trim(Str(First)strTemp = “开始数字转换For i = 1 To Len(strFirst)取出第i位的字符数字,并将它转换为数值型j = Val(Mid(strFirst, i, 1)通过数组完成大写转换strTemp = strTemp + strBig(j)Next i将转换结果返回ChangeMe = strTempEnd Function (演示),25,习题 P116 三、

12、问答题,5. 请简述多功能计算器与第3章计算器在功能上的区别。 答:区别有以下几点: 1)能将计算结果转换为十六进制。 2) 将数字键设置为命令按钮组,使“0”“9”数字按键的Index属性分别为0、1、2、3、4、5、6、7、8、9。用按键的Index来识别输入的数字。 3)禁止键盘在文本框中输入数据。 4)使计算器总是悬浮在其它窗体上。,26,4.2 数组的使用,4.2.1 数组 1. 数组的概念VB把一组具有同一名字、不同下标的变量称为数组,它实际上是一组具有相同类型的变量的集合。根据下标的个数可分为一维数组、二维数组、多维数组。 例如: 设置数组变量的值strBig(0) = “零“:

13、 strBig(1) = “壹“: strBig(2) = “贰“: _strBig(3) = “叁“: strBig(4) = “肆“: strBig(5) = “伍“: _strBig(6) = “陆“: strBig(7) = “柒“: strBig(8) = “捌“: strBig(9) = “玖“,27,2. 声明静态数组,数组分为静态数组和动态数组。定义静态数组的方法与变量的声明方法基本相同。有两种声明方法: (1)方法1 Dim 数组名(上界) As 数据类型 这种定义方法,默认情况下数组的下界从0开始,因此数组元素的个数等于上界+1。数组的全部元素都初始化为0(数值型)或空字符

14、串(字符串型)例如定义一维数组:Dim A(5) As Integer 数组A包括6个数组元素:A(0)、A(1)、A(5)。,28,(2)方法2,Dim 数组名(下界 To 上界) 采用这种方法可以根据需要设置下标的起始和结束值,即上界和下界。例如Dim A(1 To 5)As Integer 该数组包括5个元素:A(1)、A(2)、A(5)。 也可定义二维数组。例如:Dim A(1 To 5,1 To 5) As Integer 该数组包括 A(1,1),A(1,2),、A(1,5),,A(5,1),A(5,2),,A(5,5) 又如: Dim A(5,5) As Integer 该数组包

15、括36个元素:A(0,0),A(0,1),A(0,2),A(0,5),,A(5,0),A(5,1),A(5,2),,A(5,5),29,3. 动态数组,如果事先不能确定数组元素的个数,可以采用动态数组声明技术,主要方法是: (1)首先声明一个静态数组,只定义其数组名,不指定数组的大小。例如Dim A As Integer (2)在程序执行过程中,使用ReDim语句修改数组的大小或数组的上界,例如:ReDim A (20)As IntegerReDim A(1 To 20) As Integer,30,习题 P115 一、单项选择题,1. Dim A(1 To 6,1 To 5)定义的数组包含的

16、元素个数是( )。 A. 30 B. 25 C. 42 D. 动态变化 答案:A,31,习题 P116 二、填空题,4. Dim A(1 To 6)定义的数组包含 个元素。 答案:6,32,习题 P116 三、问答题,3. 什么是数组,如何声明,使用数组有什么好处? 答: VB把一组具有同一名字、不同下标的变量称为数组,它实际上是一组具有相同类型的变量的集合。数组分为静态数组和动态数组。定义静态数组的方法与变量的声明方法基本相同。有两种声明方法:方法1:Dim 数组名 (上界) As 数据类型方法2:Dim 数组名(下界 To 上界) As 数据类型。使用数组可以使程序代码更清晰、简洁。,可以

17、方便灵活地组织数据。,33,4.2.2 控件数组,控件数组是一种特殊的数组,与普通数组的主要区别是,它的数据类型为控件类型。每个数组元素都是一个控件对象,这些控件对象共用一个相同的名字,即所有的元素的Name属性值相同,各控件元素用Index属性表示数组下标。,34,数字区命令按钮的Click事件,Private Sub Command1_Click(Index As Integer)使用Str函数将Index转换为字符串,然后使用Trim函数去掉前后空格If txtLabel.Text = “ ThentxtFirst.Text = txtFirst.Text + Trim(Str(Inde

18、x)ElsetxtSecond.Text = txtSecond.Text + Trim(Str(Index)End If End Sub,35,数字区命令按钮的Click事件也可编写如下:,Private Sub Command1_Click(Index As Integer)Select Case IndexCase 0If txtLabel.Text = “ ThentxtFirst.Text = txtFirst.Text + “0”ElsetxtSecond.Text = txtSecond.Text + “0”End IfCase 1If txtLabel.Text = “ The

19、ntxtFirst.Text = txtFirst.Text + “1”ElsetxtSecond.Text = txtSecond.Text + “1”End If,36,Case 9If txtLabel.Text = “ ThentxtFirst.Text = txtFirst.Text + “9”ElsetxtSecond.Text = txtSecond.Text + “9”End IfEnd Select End Sub利用Select或If选择结构,通过对Index属性值的判断,响应不同按钮元素的单击事件。,37,习题 P116 一、单项选择题,3. 如果创建了命令按钮数组控件

20、,那么Click事件的参数是( )。 A. Index B. Caption C. Tag D. 没有参数 答案:A,38,习题 P116 二、填空题,2. 在程序运行过程中可以使用 语句修改数组的上下界。 答案:ReDim,39,4.2.3 枚举及自定义数据类型,1. 枚举 当一个变量只可能取几个值时,可将其定义为枚举型,比如一个变量取17之间的整数来表示星期几,则可以把这个变量定义为枚举型。枚举类型只能有一个元素。 要定义枚举型变量,须先用关键字Emum定义一个枚举类型。例如:Public Enum enmDay星期日 = 1星期一 = 2星期五 = 6星期一 = 7End Emun,40

21、,4.2.3 枚举及自定义数据类型,该语句定义了一个名为enmDay的枚举变量。注意emnDay本身并不是一个变量,它只是用户自己定义的新的数据类型。一经定义,就可以像VB提供的标准数据类型(如String、Integer)一样使用。例如:Dim Myday As emnDay 声明一个变量Myday,其数据类型为enmDayMyday = 星期日 为变量赋值,即Myday = 1 使用枚举型时应注意几点: (1)枚举类型中的元素只能表示长整型常数。 (2)枚举类型应在模块级别中定义。 (3)当定义时没有给枚举成员赋值时,系统自动为第一个成员赋值0,以后的成员值依次加1。,41,2. 自定义类

22、型 自定义类型与枚举类型一样,也是一种构造型数据,称为记录类型。使用方法如下: (1)定义Public Type Student学号 As String*10姓名 As String*10年龄 As Integer籍贯 As StringEnd Type 该语句定义了一个名为Student的数据类型。 (2)声明变量Dim x As Student(3)使用x. 学号 = “2004001”x. 姓名 = “张红”,42,枚举和自定义类型是一种有效的数据组织方式。尽管不使用它们也照样可以开发出功能强大的应用程序,但有效地应用这两种方式,可以使程序代码更清晰、简洁。如果要使用这两种方式,最好能在

23、模块中用Public定义,以便整个应用程序使用。,43,4.3 过程和函数的定义和调用,VB窗体和控件的每一个事件都是一个过程,称为事件过程,它们总是与特定的控件对象相关联,所以被认为是私有(Private)过程。此外,VB还提供了一些内置的由系统预先编好的函数,比如Trim,Str和Val函数等。在VB中,将SubEnd Sub定义的子程序称为Sub过程(子过程),而将FunctionEnd Fuction定义的函数称为Function过程(函数过程)。,44,4.3.1 为什么要编写自定义过程,函数过程是一种代码分块技术,采用这种技术将应用程序划分为多个程序模块,其好处是: 1.过程规模小

24、,容易调用和维护。 2.过程可以被反复调用,避免了重复编码,加强了可重用性。 3.过程是由处理某一特定功能的代码组成,是一个相对独立的实体,将应用程序划分为这样一个实体,会使程序结构简洁,便于阅读维护。,45,习题 P116 三、问答题,1. 为什么要编写自定义过程? 因为自地那以过程有以下好处: 1.过程规模小,容易调用和维护。 2.过程可以被反复调用,避免了重复编码,加强了可重用性。 3.过程是由处理某一特定功能的代码组成,是一个相对独立的实体,将应用程序划分为这样一个实体,会使程序结构简洁,便于阅读维护。,46,4.3.2 Sub 过程,1. 定义 一般应在窗体代码编辑器的“通用”部分定

25、义私有的Sub过程,一经定义则可以在窗体的所有地方调用它。,47,如果希望定义整个应用程序均可以使用的公有过程,则最好在标准模块(Module)进行。,48,2. 调用,调用过程的方法非常简单,如图所示。,49,习题 P116 一、单项选择题,4. 如果要在窗体代码编辑器的“通用”部分定义私有Sub过程,则正确的语句是( )。 A. Public Sub B. Public Fnction C. Private Sub D. Private Function 答案:C,50,4.3.3 Fucttion函数,1. 定义Function过程以一个返回值表示执行结果,也有公有的和私有的两种作用范围

26、。例如,在窗体中定义一个返回整型数据的私有Function函数:Private Function PlusXY(x As Integer,yAs Integer)As IntegerPlusXY = x+yEnd Function2. 调用Function过程的调用方法如下:Dim I As IntegerI = PlusXY(1,2),51,4.3.4 参数传递机制简介,大部分过程都含有参数。将Sub过程或Function过程定义中出现的变量名称为形式参数,而在调用时传递给Sub过程和Function过程的常量、变量或表达式称为实际参数。将参数以变量形式传递的过程称为参数传递。VB中参数传递

27、机制有两种:一种是引用参数传递(默认),另一种是按值传递参数。,52,1. 引用传递参数,这种方式将参数变量的内存地址传递给Sub或Function过程,过程通过内存地址访问实际参数的内容,从而可以方便地改变实际参数的值。,53,Private Sub Change(x As Integer,y As Integer)本程序将参数x,y的值互换Dim t As Integert=xx=yy=t在窗体是输出结果Print “x=”;x,”y=”;y End Sub Private Sub Form_Click()Dim a As IntegerDim b As Integera=3:b=4Cha

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

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

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

31、除键。,58,1. 焦点处理,窗体或控件(对象)的焦点是对象活动的标志,在Windows应用中,可以同时运行几个应用程序,但只有具有焦点的应用程序才有活动标题栏,才能接受用户输入。在同一窗体中,也只有具有焦点的的TextBox文本框才能接受键盘输入。总之只有获得焦点的窗体或控件才能接受键盘事件。所以在处理键盘事件嵌,应首先对焦点进行处理。,59,实现控件焦点的两种方法,(1)SetFocus方法在程序运行时,通过鼠标选择操作或控件的SetFocus方法实现。VB所提供的标准控件一般都有一个SetFocus方法。通过该方法可以把焦点赋予指定的控件,是一种灵活的焦点控制方法。比如希望在程序运行期的

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

33、ed=False),也不可能获得焦点了。,61,习题 P116 二、填空题,3. 如果不希望某个控件获得焦点,则可以将它的 属性设置为False。 答案:TabStop,62,习题 P116 三、问答题,4. 什么是焦点,设置控件焦点有哪些方法? 答:窗体或控件(对象)的焦点是对象活动的标志,只有获得焦点的窗体或控件才能接受键盘事件。 设置控件焦点的两种方法: SetFocus方法:控件名.SeFocus 按预先设计好的顺序,改变控件的TabIndex的值。,63,2. 窗体的键盘事件,如果希望无论何时按下某个键,都会同时执行同一操作,而不管此时到底哪个控件具有焦点的话,就可以使用窗体的键盘事

34、件。具体方法是:首先将窗体的KeyPreview属性设置为True,然后再编写相应的键盘事件处理程序。,64,1. KeyDown和KeyUp事件分析,计算机键盘上的每一个键均有一个键码,称为键码。KeyCode参数返回了键盘的键码值。通过它判断用户按下哪个键。既可以用数字也可以利用VB提供的键码常数进行判断处理,比如vbKeyF1(F1键)、vbKeyHome(Home键)、vbKeyA(A和a键)等。例如:If KeyCode = vbKeyBack ThenIf KeyCode = vbKeyDelete Then,65,(2)Shift参数,通过该参数判断用户是否按下了Shift、Ct

35、rl或Alt键。例如: If Shift = vbShiftMask Then If Shift = vbCtrlMask Then If Shift = vbAlttMask Then If (Shift = vbAltMask) And (Key Code= VbKeyA) Then,66,3. KeyPress事件,KeyPress事件发生于KeyDown和KeyUp之间,它只有一个KeyAscii参数,反映了用户通过键盘输入的字符的ASCII码。 当需要处理标准ASCII字符时可使用这个事件,但要处理扩展字符键、组合键和定位键时,则只能使用KeyDown和KeyUp事件。例如: Pri

36、vate Sub Text1_KeyPress(Index As Integer,KeyAscii As Integer) 只允许输入数字,其中用到的数字48和57分别表示字符0和9的ASCII码If(KeyAscii57) ThenKeyAscii= 0End If End Sub,67,常用键盘码与ASCII码的对应关系,键码未必都有对应的ASCII码。A和a的ASCII码不同,但它 们在键盘上是一个按键,因此键码是一样的。,68,习题 P116 一、单项选择题,5. 键盘事件的执行顺序是( )。 A. KeyPress,KeyDown,KeyUp B. KeyDown,KeyPress,

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

38、hift参数的值是:“ & Shift, 0, “键盘按键程序“ End SubPrivate 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, “键

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

40、cii = 13 ThenSendKeys “tab“End If End Sub,73,Private Sub Text2_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenSendKeys “tab“End If End Sub Private Sub Text3_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenSendKeys “tab“End If End Sub(演示),74,习题 P116 四、程序设计题,1. 焦点切换程序。在一窗体上创建一文本框控件数组,并设置好它们的TabIn

41、dex属性,然后使用SendKeys语句编写文本框事件的KeyPress事件。运行时,当按下回车键后,空间的焦点自动切换。 第一步:设计界面 第二步:设计代码,75,Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)Select Case IndexCase 0If KeyAscii = 13 ThenSendKeys “tab“End IfCase 1If KeyAscii = 13 ThenSendKeys “tab“End IfCase 2If KeyAscii = 13 ThenSendKeys “tab“

42、End IfCase 3If KeyAscii = 13 ThenSendKeys “tab“End IfEnd Select End Sub,76,4.4.2 响应鼠标事件,1. 改变鼠标的形状 每个窗体和控件都具有MousePointer属性,可通过它赋予它015间的不同值改变鼠标形状。既可在设计阶段进行,也可以在程序代码中改变设置。 2.使用自定义鼠标形状 如果将MousePointer属性的值设置为99,则可以使用自定义鼠标形状。方法是:首先找一些光标(*.cur)或(*.ico)文件,然后通过MouseIcon属性完成设置。,77,4.4.2 响应鼠标事件,3. MouseDown和

43、MouseUp事件 这两个事件主要有两个参数: (1)Button参数 可用来区分当前鼠标的左、中、右按键,0表示按下左键,1表示按下右键,2表示按下中间键。 (2)Shift参数 可用来区分鼠标与键盘的组合,它的值等于1,表示Shift键按下,2表示Ctrl 键,4表示Alt键。 (3)x,y参数 返回鼠标指针当前的位置,计量单位由窗体的ScaleMode决定。它们的值被限定在caleHeight,ScaleWidth,ScaleLeft和ScaleTop属性所建立的坐标系内。,78,习题 P116 四 程序设计题,4. 随机序列排序程序。使用第三章学过的Ren函数生成10个199之间的随机

44、整数,并按从小到大的顺序排序,最后在列标框控件中输出。本程序主要使用数组、自定义过程、引用传递参数等知识。,79,代码设计:,Private Sub MyRnd(B() As Integer)Dim i As IntegerRandomizeFor i = 1 To 10B(i) = Int(Rnd * 100)MsgBox “产生的第” & i & “个随机数是” & _ B(i), 0, “当前产生的随机数“Next i End Sub,80,代码设计:,Private Sub Command1_Click()Dim A(1 To 10) As IntegerDim i As Intege

45、rMyRnd AFor i = 1 To 10For j = i + 1 To 10If A(i) A(j) Thent = A(i)A(i) = A(j)A(j) = tEnd IfNext jNext iList1.ClearFor i = 1 To 10List1.AddItem A(i)Next i End Sub,81,实验4 鼠标、键盘、API函数调用,一、键盘错位程序 1. 实验要求 通过对文本框控件的鼠标KeyPress事件的编程,使得键盘按键发生错位,比如电脑感按下“A”键时,在文本框中将显示字母“B”,依次类推。 2.实验步骤 第1步:界面设计,82,实验4 鼠标、键盘、A

46、PI函数调用,一、键盘错位程序 第1步:代码设计,83,实验4 鼠标、键盘、API函数调用,二、实用的键盘使用技巧 1. 实验要求 利用键盘的KeyPress事件进行编程,使控件焦点轮流在三文本框和“确定”按钮之间转换。,84,实验4 鼠标、键盘、API函数调用,二、实用的键盘使用技巧 1. 实验步骤 第1步:进行界面设计,Text1为文本框数组, 自上而下索引号(Index) 依次为0,1,2。 Texe1(0), Text1(1), Text1(2), Command1 的TabIndex属性依次 设置为0,1,2,3。,85,实验4 鼠标、键盘、API函数调用,一、实用的键盘使用技巧 1

47、. 实验步骤 第1步:进行代码设计编写Form_Load事件代码 Private Sub Form_Load()当Form启动时,对Text1控件数组赋初值For i = 0 To Text1.Count - 1Text1(i).Text = “Next End Sub,86,编写Text1控件数组的KeyPress事件代码 Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)当键入户车键时(ASCII码为13),发送Tab键If KeyAscii = 13 ThenSendKeys “tab“End If如果当前的

48、焦点是Text1(2),则只允许用户输入数字If Index = 2 ThenIf (Chr(KeyAscii) “9“) And KeyAscii 8 ThenKeyAscii = 0End IfEnd If End Sub,87,编写Command1的Click事件代码 Private Sub Command1_Click()显示输出结果,其中vbcr等效于Chr(13)Dim strSQL As StringstrSQL = “根据你的输入值,拼写SQL语句如下:“ + vbCrstrSQL = strSQL + “INSERT INTO 学生表(学号,姓名,年龄)“ + vbCrstr

49、SQL = strSQL + “VALUES(“ + Text1(0).Text + “,“ + Text1(1).Text + “,“ + Text1(2).Text + “)“MsgBox strSQL, vbQuestion + vbOKOnly, “信息提示“使得Text1(0)重新获得焦点Text1(0).SetFocus End Sub编写Command2的Click事件代码 Private Sub Command2_Click()End End Sub,88,实验4 鼠标、键盘、API函数调用,三、鼠标事件应用 1. 实验要求 利用鼠标的MouseMove事件进行编程,使Label1控件的Caption”欢迎进入Visual Basic世界“跟随鼠标移动,同时字体的颜色页也会不断变化。,89,实验4 鼠标、键盘、API函数调用,三、鼠标事件应用 2. 实验步骤 第1步:界面设计,90,实验4 鼠标、键盘、API函数调用,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

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

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报