vb设计知识剖析

上传人:今*** 文档编号:107499051 上传时间:2019-10-19 格式:PPT 页数:63 大小:413KB
返回 下载 相关 举报
vb设计知识剖析_第1页
第1页 / 共63页
vb设计知识剖析_第2页
第2页 / 共63页
vb设计知识剖析_第3页
第3页 / 共63页
vb设计知识剖析_第4页
第4页 / 共63页
vb设计知识剖析_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《vb设计知识剖析》由会员分享,可在线阅读,更多相关《vb设计知识剖析(63页珍藏版)》请在金锄头文库上搜索。

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

2、述,能否利用第3章所学知识,对这个程序进行一些功能扩展,比如将计算结果转换成十六进制呢? 文本框主要是用于显示信息的,那么能否禁止用户通过键盘在其中输入数据呢? 能否使计算器窗体总是悬浮在其他窗体之上,以便于使用呢?,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.T

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

5、s事件中额外编写代码。 Private Sub txtResult_KeyPress(KeyAscii As 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 Doubl

6、e) As String 声明变量 Dim strFirst As String Dim strBig(9) As String 声明一个字符串数组 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型的参数

7、First转换为字符串型 strFirst = Trim(str(First) strTemp = “ 开始数字转换 For i = 1 To Len(strFirst) j = Val(Mid(strFirst, i, 1) 取第i位置的字符数字,并将它转换为数值型 strTemp = strTemp + strBig(j) 通过数组完成大写转换 Next I 将转换结果返回 ChangeMe = strTemp End Function,18,4.2数组的使用,19,4.2.1数组,1数组的概念 在实际编程时,经常会对一批具有相同属性的数据整体进行处理,这时就会用到数组类型了。 VB中把一

8、组具有同一名字,不同下标的变量称为数组,它实际上是一组相同类型的变量的集合。 根据下标的个数可分为一维数组、二维数组、多维数组。,20,2声明静态数组,方法1:Dim 数组名(上界) As数据类型 Dim A(5) As Integer Dim B(5,5) As Integer 方法2:Dim 数组名(下界 To 上界) Dim A(1 To 5) As Integer Dim B(1 To 5,1 To 5) As Integer,21,3动态数组,如果不能事先确定数组元素的个数,我们就可以采用动态数组声明技术 主要方法 (1)首先声明一个静态数组。可以只定义数组名,不指定数组的大小。比如

9、: Dim A() As Integer (2)在程序执行过程中,使用ReDim语句修改数组的大小或数组的上下界,比如: ReDim A(20) As Integer 或 ReDim A(1 To 20) As Integer,22,4.2.2控件数组,即所有元素的Name属性均相同 各控件元素用Index属性表示数组下标 请思考:为什么要使用控件数组?,23,4.2.3枚举及自定义数据类型,Public Enum enmDay 星期日 = 1 星期一 = 2 星期二 = 3 星期三 = 4 星期四 = 5 星期五 = 6 星期六 = 7 End Enum,枚举请自学,24,声明一个变量Myd

10、ay,其类型为enmDay Dim Myday As enmDay 为变量赋值,相当于Myday=1 Myday = 星期日,25,Public Type Student 学号 As String*10 姓名 As String*10 年龄 As Integer 籍贯 As String End Type,自定义 请自学,26,(1)声明变量 Dim x As Student (2)使用 x.学号 = “2004001“ x.姓名 = “张红“,27,枚举和自定义类型是一种有效的数据组织方式,尽管不使用它们也照样可以开发出功能强大的应用程序,但有效地运用这两种方式,可以使程序代码更清晰,简洁。

11、如果要使用这两种方式,最好能在模块中使用Public定义,以便整个应用程序使用。,28,4.3过程和函数的定义和调用,SubEnd Sub定义的子程序称为Sub过程(子过程) 将FunctionEnd Function定义的函数称为Function过程(函数过程),29,4.3.1为什么要编写自定义过程,请思考? 不编写自定义过程,难道就不能实现程序功能了吗?,30,函数过程是一种代码分块技术,采用这种技术将应用程序划分为多个程序模块,至少可带来以下好处: 1过程规模小,容易调度和维护。 2过程可以被反复调用,从而避免了重复编码,加强了可重用性(Reuse)。 3过程是由处理某一特定功能的代码

12、组成,是一个相对独立的实体。将应用程序划分为一个个这样的实体,会使得程序结构简洁,便于阅读维护。,31,4.3.2 Sub过程,1.在标准模块中定义公用过程,32,2.在窗体中建立私有的Sub过程,33,3调用,34,4.3.3 Function过程,1.定义 Private Function PlusXY(x As Integer,y As Integer) As Integer PlusXY = x+y End Function,2.调用 Dim I As Integer I = PlusXY(1,2),35,4.3.4 参数传递机制简介,形式参数:将Sub过程或Function过程定义中

13、出现的变量名称 实际参数:在调用时传递给Sub过程和Function过程的常量、变量或表达式。 将参数以变量的形式传递的过程称为参数传递 ,VB中参数传递的机制有两种: 一种是引用传递参数(默认) 另一种是按值传递参数。,36,1按引用传递参数,这种方式将参数变量的内存地址传递给Sub或Function过程,过程通过内存地址访问实际参数的内容,从而可以方便地改变实际参数的值 请分析以下程序运行结果,37,Private Sub Change(x As Integer, y As Integer) 本程序将参数x,y的值互换 Dim t As Integer t = x x = y y =t 在

14、窗体上输出结果 Print “x=“; x, “y=“; y End Sub,Private Sub Form_Click() Dim a As Integer Dim b As Integer a=3:b=4 Change a,b Print “a=“; a, “b=“; b End Sub,38,运行结果: x=4 y=3 a=4 b=3 我们发现,调用Change过程后, 实际参数a,b的值也发生了变化, 这就是引用传递参数的执行效果。,39,2按值传递参数,顾名思义,按值传递参数就是只把实际参数的数值传递给过程,也称传值方式。换句话说,传递给过程的只是实际参数的副本,因此,即使过程调用

15、时改变了形式参数的值,实际参数也不会改变。 形式参数前加上关键字ByVal,40,将上例的过程定义改为: Private Sub Change(ByVal x As Integer, ByVal y As Integer) 请分析程序运行结果,41,运行结果: x=4 y=3 a=3 b=4,42,4.4键盘和鼠标使用技巧,驱动VB程序运行的主要动力是事件响应。在VB响应的所有事件中,数目最多也最重要的是对键盘和鼠标响应的事件。因为这两个设备是用户与应用程序交互的主要工具。,43,4.4.1响应键盘事件,常用的键盘事件主要有KeyPress、KeyUp和KeyDown 它们被触发的原因分别是:

16、 KeyPress事件:用户按下了某Ascii字符的键,因此它并不是对所有的键盘均响应,比如键盘上的删除键“Delete”键。 KeyDown和KeyUp事件:按下或释放键盘上的任意键时均会触发此事件,包括删除“Delete”键。,44,要深入了解键盘事件的响应机制,还必须从对象的焦点说起,45,1焦点处理,设置控件焦点主要有两种方法 一是在程序运行的时候,通过鼠标选择操作或控件的SetFocus方法来实现; 另一种是在程序设计阶段预先设置控件的TabIndex属性,然后在运行期通过按Tab键,实现控件焦点的移动。,46,2. SendKeys过程,SendKeys “Tab“ 发送一个Tab键 SendKeys “A 10“ 发送十个A键 SendKeys “Enter“ 发送一个回车键 SendKeys “Left 3“ 发送三个左移键 SendKeys “F1“ 发送

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

当前位置:首页 > 高等教育 > 大学课件

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