【教学课件】第四讲VB高级语言技巧.ppt

上传人:小飞机 文档编号:5665504 上传时间:2023-08-07 格式:PPT 页数:66 大小:293KB
返回 下载 相关 举报
【教学课件】第四讲VB高级语言技巧.ppt_第1页
第1页 / 共66页
【教学课件】第四讲VB高级语言技巧.ppt_第2页
第2页 / 共66页
【教学课件】第四讲VB高级语言技巧.ppt_第3页
第3页 / 共66页
【教学课件】第四讲VB高级语言技巧.ppt_第4页
第4页 / 共66页
【教学课件】第四讲VB高级语言技巧.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《【教学课件】第四讲VB高级语言技巧.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四讲VB高级语言技巧.ppt(66页珍藏版)》请在三一办公上搜索。

1、1,第四讲VB高级语言技巧,2,内容简介,本章以一个多功能计算器应用程序为实例对第3章所开发的简单计算器进行功能扩展在基础上,较系统介绍数组、过程、函数的定义和使用方法详细讲解了鼠标和键盘的常用使用技巧。通过本章的学习,你将初步具备利用VB编程各类高级应用程序的能力。,3,学习目标,1掌握数组的使用方法2掌握键盘、鼠标的使用技巧3掌握过程和函数的定义和调用方法4掌握API函数的调用方法5了解枚举及自定义数据类型6了解“多功能计算器”程序设计过程,4,4.1“多功能计算器”程序任务,目的:对上一讲的“计算器”程序进行扩展和完善,5,4.1.1 任务概述,能否利用第3章所学知识,对这个程序进行一些

2、功能扩展,比如将计算结果转换成十六进制呢?文本框主要是用于显示信息的,那么能否禁止用户通过键盘在其中输入数据呢?能否使计算器窗体总是悬浮在其他窗体之上,以便于使用呢?,6,在编写数字区按钮事件代码时,工作量过于重复。10个按钮要编写10个Click事件处理程序,如果有100个这样的按钮,是不是意味着我们要编写100个这样的程序呢?仔细分析这些代码,会发现它们基本相同,那么能否采用合并同类项的方法,以减少代码设计的工作量呢?,7,本讲任务将针对上述问题,利用数组、键盘控件、自定义函数等方法,对简单计算器程序进行功能扩充,运行结果如图所示,8,采用控件数组重新设计,禁止用户键盘输入,当鼠标移动时,

3、自动显示提示信息,9,4.1.2 界面设计,新知识:控件数组,10,4.1.3 代码设计,1用API函数实现“总在前面”效果,11,2数字区的命令按钮的Click事件,与普通Click事件的区别,12,Private Sub Command1_Click(Index As Integer)使用Str函数将Index转换为字符串,然后使用Trim函数去掉前端空格。If txtLabel.Text=Then txtFirst.Text=txtFirst.Text+Trim(Str(Index)Else txtSecond.Text=txtSecond.Text+Trim(Str(Index)End

4、 IfEnd Sub,13,3禁止用户在文本框中输入数字,三种方法可实现这种功能一是将文本框的Enabled属性设置为False;二是将文本框的Locked属性设置为True;三是通过代码控制键盘事件,14,Private Sub txtResult_KeyDown(KeyCode As Integer,Shift As Integer)KeyCode=0 禁止所有的键盘输入(除BackSpace退格键外)End Sub由于上述方法不能禁止BackSpace退格键,因此需要在KeyPress事件中额外编写代码。Private Sub txtResult_KeyPress(KeyAscii As

5、 Integer)KeyAscii=0 禁止BackSpace退格键End Sub,15,4修改“计算结果”按钮的Click事件代码,将计算结果转换为十六进制数字 txtHex.Text=Hex(MyResult)将计算结果转换为大写数字,由于需要编写大量代码,所以采用函数功能完成。txtBig.Text=ChangeMe(MyResult),16,5编写ChangeMe函数代码,17,Private Function ChangeMe(First As Double)As String声明变量 Dim strFirst As String Dim strBig(9)As String 声明一

6、个字符串数组 Dim strTemp As String Dim i,j As Integer设置数组变量的值 strBig(0)=“零”:strBig(1)=“壹”:strBig(2)=“贰”strBig(3)=叁:strBig(4)=肆 strBig(5)=“伍”:strBig(6)=“陆”:strBig(7)=“柒”:strBig(8)=“捌”strBig(9)=玖将Double型的参数First转换为字符串型 strFirst=Trim(str(First)strTemp=“开始数字转换 For i=1 To Len(strFirst)j=Val(Mid(strFirst,i,1)取第

7、i位置的字符数字,并将它转换为数值型 strTemp=strTemp+strBig(j)通过数组完成大写转换 Next I将转换结果返回 ChangeMe=strTemp End Function,18,4.2数组的使用,19,数组,1数组的概念 在实际编程时,经常会对一批具有相同属性的数据整体进行处理,这时就会用到数组类型了。VB中把一组具有同一名字,不同下标的变量称为数组,它实际上是一组相同类型的变量的集合。根据下标的个数可分为一维数组、二维数组、多维数组。,20,2声明静态数组,方法1:Dim 数组名(上界)As数据类型 Dim A(5)As Integer Dim B(5,5)As I

8、nteger方法2:Dim 数组名(下界 To 上界)Dim A(1 To 5)As IntegerDim B(1 To 5,1 To 5)As IntegerOption base0|1在模块级别中使用,用来声明数组下标的缺省下界缺省状态为0,21,3动态数组,如果不能事先确定数组元素的个数,我们就可以采用动态数组声明技术 主要方法(1)首先声明一个静态数组。可以只定义数组名,不指定数组的大小。比如:Dim A()As Integer(2)在程序执行过程中,使用ReDim语句修改数组的大小或数组的上下界,比如:ReDim A(20)As Integer或ReDim A(1 To 20)As

9、Integer,22,控件数组,数据类型为控件类型即所有元素的Name属性均相同各控件元素用Index属性表示数组下标 注:1.数组命名规则同变量名2.数组名后用圆括弧3.下标下界不可大于上界4.可用变量名或常数名作下标的边界,23,枚举及自定义数据类型,Public Enum enmDay星期日=1星期一=2星期二=3星期三=4星期四=5星期五=6星期六=7End Enum,Dim myday as enmdayMyday=星期日,24,声明一个变量Myday,其类型为enmDayDim Myday As enmDay 为变量赋值,相当于Myday=1 Myday=星期日,25,自定义类型,

10、构造类型数据数组原因:将不同类型的数据组合成一个整体,以便于引用。记录用户自定义数据类型,由多个变量构成的结构化的数据类型变量是记录的成员,可以为不同类型,自定义请自学,26,1.记录类型定义语法格式:Private|Public Type 记录类型名 成员列表 End TypePublic,可选,可在所有工程的所有模块的任何过程中使用Private,可选,只能在包含该声明的模块中使用,27,成员列表是记录中成员的集合,对成员进行类型说明 成员名 As 数据类型记录类型变量的命名规则同一般变量名,不同点:不能使用类型声明后缀%,&,#,!,$TypeEnd Type块中不允许使用行号和标签,2

11、8,例:Public Type Student学号 As String*10姓名 As String*10年龄 As Integer籍贯 As String End Type,29,(1)声明变量 Dim x As Student(2)使用 x.学号=2004001 x.姓名=张红,30,枚举和自定义类型是一种有效的数据组织方式,尽管不使用它们也照样可以开发出功能强大的应用程序,但有效地运用这两种方式,可以使程序代码更清晰,简洁。如果要使用这两种方式,最好能在模块中使用Public定义,以便整个应用程序使用。,31,4.3过程和函数的定义和调用,SubEnd Sub定义的子程序称为Sub过程(

12、子过程)将FunctionEnd Function定义的函数称为Function过程(函数过程),32,为什么要编写自定义过程,33,函数过程是一种代码分块技术,采用这种技术将应用程序划分为多个程序模块,至少可带来以下好处:1过程规模小,容易调度和维护。2过程可以被反复调用,从而避免了重复编码,加强了可重用性(Reuse)。3过程是由处理某一特定功能的代码组成,是一个相对独立的实体。将应用程序划分为一个个这样的实体,会使得程序结构简洁,便于阅读维护。,34,4.3.2 Sub过程,1.在标准模块中定义公用过程,35,2.在窗体中建立私有的Sub过程,36,3调用,37,4.3.3 Functi

13、on过程,1.定义Private Function PlusXY(x As Integer,y As Integer)As IntegerPlusXY=x+y End Function,2.调用Dim I As IntegerI=PlusXY(1,2),38,4.3.4 参数传递机制简介,形式参数:将Sub过程或Function过程定义中出现的变量名称实际参数:在调用时传递给Sub过程和Function过程的常量、变量或表达式。将参数以变量的形式传递的过程称为参数传递,VB中参数传递的机制有两种:一种是引用传递参数(默认)另一种是按值传递参数。,39,1按引用传递参数,这种方式将参数变量的内存

14、地址传递给Sub或Function过程,过程通过内存地址访问实际参数的内容,从而可以方便地改变实际参数的值 请分析以下程序运行结果,40,Private Sub Change(x As Integer,y As Integer)本程序将参数x,y的值互换Dim t As Integert=xx=yy=t在窗体上输出结果Print x=;x,y=;yEnd Sub,Private Sub Form_Click()Dim a As IntegerDim b As Integera=3:b=4Change a,bPrint a=;a,b=;bEnd Sub,41,运行结果:x=4 y=3a=4 b=

15、3我们发现,调用Change过程后,实际参数a,b的值也发生了变化,这就是引用传递参数的执行效果。,42,2按值传递参数,顾名思义,按值传递参数就是只把实际参数的数值传递给过程,也称传值方式。换句话说,传递给过程的只是实际参数的副本,因此,即使过程调用时改变了形式参数的值,实际参数也不会改变。形式参数前加上关键字ByVal,43,将上例的过程定义改为:Private Sub Change(ByVal x As Integer,ByVal y As Integer)请分析程序运行结果,44,运行结果:x=4 y=3 a=3 b=4,45,4.4键盘和鼠标使用技巧,驱动VB程序运行的主要动力是事件

16、响应。在VB响应的所有事件中,数目最多也最重要的是对键盘和鼠标响应的事件。因为这两个设备是用户与应用程序交互的主要工具。,46,响应键盘事件,常用的键盘事件主要有KeyPress、KeyUp和KeyDown它们被触发的原因分别是:KeyPress事件:用户按下了某Ascii字符的键,因此它并不是对所有的键盘均响应,比如键盘上的删除键“Delete”键。KeyDown和KeyUp事件:按下或释放键盘上的任意键时均会触发此事件,包括删除“Delete”键。,47,要深入了解键盘事件的响应机制,还必须从对象的焦点说起,48,1焦点处理,设置控件焦点主要有两种方法一是在程序运行的时候,通过鼠标选择操作

17、或控件的SetFocus方法来实现;另一种是在程序设计阶段预先设置控件的TabIndex属性,然后在运行期通过按Tab键,实现控件焦点的移动。,49,2.SendKeys过程,SendKeys Tab 发送一个Tab键SendKeys A 10 发送十个A键SendKeys Enter 发送一个回车键SendKeys Left 3 发送三个左移键SendKeys F1 发送一个F1键 SendKeys CapsLock 发送一个大写切换键,50,焦点移动演示,每当按下回车,焦点自动下移,加快输入速度,51,Private Sub Text1_KeyPress(Index As Integer,

18、KeyAscii As Integer)If keyasii=13 Then SendKeys Tab End If End Sub,52,响应鼠标事件,除了我们已经熟悉的Click、DblClick事件外,VB还提供了其他鼠标控制功能。,53,1改变鼠标的形状,VB提供了15种鼠标形状,同时支持用户自定义功能。在不同的场合使用不同形状的鼠标是Windows应用程序的一种界面风格,这不仅可减少用户的单调感,更重要的是起到信息提示的作用,54,比如,当需要用户长时间等待时,我们可以将鼠标改为沙漏形状;当需要用户输入时,可以将鼠标设置成I型,55,2使用自定义鼠标形状,如果将MousePointe

19、r的值设置成99,则可以使用自定义鼠标形状了。基本方法是:首先找一些光标(*.Cur)或图标(*.Ico)文件然后通过MouseIcon属性完成设置,操作方法也比较简便。,56,3MouseDown和MouseUp事件,Click是鼠标操作中最常用的事件,它相当于键盘的KeyPress事件。但发生在它之前和之后的MouseDown、MouseUp也非常有用,它们比Click事件功能更强大,能够区别出鼠标的左、中、右按钮。利用它可以编写Shift、Ctrl、Alt等键盘按键与鼠标组合操作的功能,57,鼠标和键盘事件综合演示,58,总之,作为一种功能强大的可视化编程语言,VB带给我们的还远远不只这

20、些。但我们只要从实用出发,先掌握了这些实用且常用的编程技巧,才有可能成为高级程序员刘世峰,59,本章习题,一、单项选择题1Dim A(1 To 6,1 To 5)定义的数组包含的元素个数是()A30 B25C42 D动态变化2能够实现“窗体总在最前端”界面效果的API函数是()ASetWindowPos BSetWindowAPICSetWindowShape DDeclareAPI3如果创建了命令按钮数组控件,那么Click事件的参数是()AIndex BCaptionCTag D没有参数,60,4如果要在窗体代码编辑器的“通用”部分定义私有Sub过程,则正确的语句是()APublic Su

21、b BPublic FunctionCPrivate Sub DPrivate Function5键盘事件的执行顺序是()AKeyPress、KeyDown、KeyUpBKeyDown、KeyPress、KeyUpCKeyUp、KeyDown、KeyPressDKeyUp、KeyPress、KeyDown,61,作业,1焦点切换程序。在一窗体上创建一文本框控件数组,并设置好它们的TabIndex属性,然后使用SendKeys语句对文本框控件的KeyPress事件编写。运行时,当按下回车键后,控件的焦点将自动切换。,62,2键盘按键程序。请使用MsgBox过程对窗体的KeyDown和KeyPress事件编程,以显示按下、放开一个键时的事件发生经过。比如,当按下了A键时程序界面如图1所示。,63,3跟踪鼠标轨迹程序。随着鼠标在窗休上移动时,在鼠标指针当前位置画一个直径为60的圆。本程序将用到窗体的Circle方法,画圆的语句是:Form1.Circle(x,y),60。其中(x,y)表示鼠标当前位置。运行结果如图2所示。,64,65,4随机序列排序程序。使用第3章学过的Rnd函数生成10个099之间的随机整数,并按从小到大的顺序排序,最后在列表框控件中输出。本程序主要练习数组、自定义过程、引用传递参数等知识。程序运行结果如图3所示。,66,本讲结束!,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号