北京电大VisualBasic程序设计第4章VB高级语言技巧.ppt
《北京电大VisualBasic程序设计第4章VB高级语言技巧.ppt》由会员分享,可在线阅读,更多相关《北京电大VisualBasic程序设计第4章VB高级语言技巧.ppt(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”数字按钮控件,并重新放置一个命令按钮控件,将其Caption属性设置为“0”
2、。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 SetWindowPos Lib u
3、ser32 _(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 Long Private Const HWND_TOPMOST=-1 Private Const SWP_NOMOVE=&H2 Private Const SWP_NOSIZE=&H1然后在Form的Load事件中加入以下代码:SetWindowPos hwnd,HWND_TOPMOST,0,0,
4、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浏览器。,7,8,第1步:启动“API文本浏览器”,9,10,第2步:选择“文
5、件-加载文本文件”菜单项,11,加载WinAPI.txt文件。,12,第3步:选择API类型:声明,13,第4步:选择立刻用项SetWindowPos,将声明范围设置为“私有”。,14,按添加按钮。,15,第5步:就选定项下的VB代码复制,16,第5步:将复制的VB代码粘贴到窗体代码编辑器中的“通用-声明”部分。,17,习题 P115 一、单项选择题,2.能够实现“窗体总在最前端”界面效果的API函数是()。A.SetWindowPosB.SetWindowAPIC.SetWindowShapeD.DeclareAPI答案:A,18,2.数字区命令按钮的Click事件,Private Sub
6、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 IfEnd Sub,19,3.禁止用户在文本框中输入数字,Private Sub txtResult_KeyDown(KeyCode As Integer,Shift As Integer)KeyCode=0 禁止所有的键盘
7、输入(除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 Command17_Click()定义一个Double类型的变量 Dim MyResult As Double 以txtLable.Text的值为多重分支
8、条件 Select Case txtLabel.Text Case+当txtLabel.Text的值为+时 MyResult=Val(txtFirst.Text)+Val(txtSecond.Text)Case-当txtLabel.Text的值为-时 MyResult=Val(txtFirst.Text)-Val(txtSecond.Text)Case 当txtLabel.Text的值为时 MyResult=Val(txtFirst.Text)*Val(txtSecond.Text)Case 当txtLabel.Text的值为时 MyResult=Val(txtFirst.Text)/Val(
9、txtSecond.Text)End Select,22,4.修改“计算结果”按钮的Click事件代码,txtResult.Text=MyResult 显示计算结果 将计算结果转换为十六进制数字 txtHex.Text=Hex(MyResult)将计算结果转换为大写数字,(采用函数功能完成)txtBig.Text=ChangeMe(MyResult)End Sub,23,5.编写ChangeMe函数代码,Private Function ChangeMe(First As Double)As String 声明变量 Dim strFirst As String Dim strBig(9)As
10、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)=玖,24,5.编写ChangeMe函数代码,将Double型的参数First转换为字符串型 strFirst=Trim(Str(First)strTemp=开始数字转换 For i=1 To Len(strFirst)取出
11、第i位的字符数字,并将它转换为数值型 j=Val(Mid(strFirst,i,1)通过数组完成大写转换 strTemp=strTemp+strBig(j)Next i 将转换结果返回 ChangeMe=strTemp End Function(演示),25,习题 P116 三、问答题,5.请简述多功能计算器与第3章计算器在功能上的区别。答:区别有以下几点:1)能将计算结果转换为十六进制。2)将数字键设置为命令按钮组,使“0”“9”数字按键的Index属性分别为0、1、2、3、4、5、6、7、8、9。用按键的Index来识别输入的数字。3)禁止键盘在文本框中输入数据。4)使计算器总是悬浮在其它
12、窗体上。,26,4.2 数组的使用,4.2.1 数组1.数组的概念 VB把一组具有同一名字、不同下标的变量称为数组,它实际上是一组具有相同类型的变量的集合。根据下标的个数可分为一维数组、二维数组、多维数组。例如:设置数组变量的值 strBig(0)=零:strBig(1)=壹:strBig(2)=贰:_ strBig(3)=叁:strBig(4)=肆:strBig(5)=伍:_ strBig(6)=陆:strBig(7)=柒:strBig(8)=捌:strBig(9)=玖,27,2.声明静态数组,数组分为静态数组和动态数组。定义静态数组的方法与变量的声明方法基本相同。有两种声明方法:(1)方法
13、1Dim 数组名(上界)As 数据类型这种定义方法,默认情况下数组的下界从0开始,因此数组元素的个数等于上界+1。数组的全部元素都初始化为0(数值型)或空字符串(字符串型)例如定义一维数组: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(
14、1,1),A(1,2),、A(1,5),,A(5,1),A(5,2),,A(5,5)又如:Dim A(5,5)As Integer该数组包括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 Integer ReDim A(1 T
15、o 20)As Integer,30,习题 P115 一、单项选择题,1.Dim A(1 To 6,1 To 5)定义的数组包含的元素个数是()。A.30B.25C.42D.动态变化答案:A,31,习题 P116 二、填空题,4.Dim A(1 To 6)定义的数组包含 个元素。答案:6,32,习题 P116 三、问答题,3.什么是数组,如何声明,使用数组有什么好处?答:VB把一组具有同一名字、不同下标的变量称为数组,它实际上是一组具有相同类型的变量的集合。数组分为静态数组和动态数组。定义静态数组的方法与变量的声明方法基本相同。有两种声明方法:方法1:Dim 数组名(上界)As 数据类型 方法
16、2:Dim 数组名(下界 To 上界)As 数据类型。使用数组可以使程序代码更清晰、简洁。,可以方便灵活地组织数据。,33,4.2.2 控件数组,控件数组是一种特殊的数组,与普通数组的主要区别是,它的数据类型为控件类型。每个数组元素都是一个控件对象,这些控件对象共用一个相同的名字,即所有的元素的Name属性值相同,各控件元素用Index属性表示数组下标。,34,数字区命令按钮的Click事件,Private Sub Command1_Click(Index As Integer)使用Str函数将Index转换为字符串,然后使用Trim函数去掉前后空格 If txtLabel.Text=Then
17、 txtFirst.Text=txtFirst.Text+Trim(Str(Index)Else txtSecond.Text=txtSecond.Text+Trim(Str(Index)End IfEnd Sub,35,数字区命令按钮的Click事件也可编写如下:,Private Sub Command1_Click(Index As Integer)Select Case Index Case 0 If txtLabel.Text=Then txtFirst.Text=txtFirst.Text+“0”Else txtSecond.Text=txtSecond.Text+“0”End If
18、 Case 1 If txtLabel.Text=Then txtFirst.Text=txtFirst.Text+“1”Else txtSecond.Text=txtSecond.Text+“1”End If,36,Case 9 If txtLabel.Text=Then txtFirst.Text=txtFirst.Text+“9”Else txtSecond.Text=txtSecond.Text+“9”End If End SelectEnd Sub 利用Select或If选择结构,通过对Index属性值的判断,响应不同按钮元素的单击事件。,37,习题 P116 一、单项选择题,3.如
19、果创建了命令按钮数组控件,那么Click事件的参数是()。A.IndexB.CaptionC.TagD.没有参数答案:A,38,习题 P116 二、填空题,2.在程序运行过程中可以使用 语句修改数组的上下界。答案:ReDim,39,4.2.3 枚举及自定义数据类型,1.枚举当一个变量只可能取几个值时,可将其定义为枚举型,比如一个变量取17之间的整数来表示星期几,则可以把这个变量定义为枚举型。枚举类型只能有一个元素。要定义枚举型变量,须先用关键字Emum定义一个枚举类型。例如:Public Enum enmDay 星期日=1 星期一=2 星期五=6 星期一=7 End Emun,40,4.2.3
20、 枚举及自定义数据类型,该语句定义了一个名为enmDay的枚举变量。注意emnDay本身并不是一个变量,它只是用户自己定义的新的数据类型。一经定义,就可以像VB提供的标准数据类型(如String、Integer)一样使用。例如:Dim Myday As emnDay 声明一个变量Myday,其数 据类型为enmDay Myday=星期日 为变量赋值,即Myday=1使用枚举型时应注意几点:(1)枚举类型中的元素只能表示长整型常数。(2)枚举类型应在模块级别中定义。(3)当定义时没有给枚举成员赋值时,系统自动为第一个成员赋值0,以后的成员值依次加1。,41,2.自定义类型自定义类型与枚举类型一样
21、,也是一种构造型数据,称为记录类型。使用方法如下:(1)定义 Public Type Student 学号 As String*10 姓名 As String*10 年龄 As Integer 籍贯 As String End Type该语句定义了一个名为Student的数据类型。(2)声明变量 Dim x As Student(3)使用 x.学号=“2004001”x.姓名=“张红”,42,枚举和自定义类型是一种有效的数据组织方式。尽管不使用它们也照样可以开发出功能强大的应用程序,但有效地应用这两种方式,可以使程序代码更清晰、简洁。如果要使用这两种方式,最好能在模块中用Public定义,以便
22、整个应用程序使用。,43,4.3 过程和函数的定义和调用,VB窗体和控件的每一个事件都是一个过程,称为事件过程,它们总是与特定的控件对象相关联,所以被认为是私有(Private)过程。此外,VB还提供了一些内置的由系统预先编好的函数,比如Trim,Str和Val函数等。在VB中,将SubEnd Sub定义的子程序称为Sub过程(子过程),而将FunctionEnd Fuction定义的函数称为Function过程(函数过程)。,44,4.3.1 为什么要编写自定义过程,函数过程是一种代码分块技术,采用这种技术将应用程序划分为多个程序模块,其好处是:1.过程规模小,容易调用和维护。2.过程可以被
23、反复调用,避免了重复编码,加强了可重用性。3.过程是由处理某一特定功能的代码组成,是一个相对独立的实体,将应用程序划分为这样一个实体,会使程序结构简洁,便于阅读维护。,45,习题 P116 三、问答题,1.为什么要编写自定义过程?因为自地那以过程有以下好处:1.过程规模小,容易调用和维护。2.过程可以被反复调用,避免了重复编码,加强了可重用性。3.过程是由处理某一特定功能的代码组成,是一个相对独立的实体,将应用程序划分为这样一个实体,会使程序结构简洁,便于阅读维护。,46,4.3.2 Sub 过程,1.定义一般应在窗体代码编辑器的“通用”部分定义私有的Sub过程,一经定义则可以在窗体的所有地方
24、调用它。,47,如果希望定义整个应用程序均可以使用的公有过程,则最好在标准模块(Module)进行。,48,2.调用,调用过程的方法非常简单,如图所示。,49,习题 P116 一、单项选择题,4.如果要在窗体代码编辑器的“通用”部分定义私有Sub过程,则正确的语句是()。A.Public SubB.Public FnctionC.Private SubD.Private Function答案:C,50,4.3.3 Fucttion函数,1.定义 Function过程以一个返回值表示执行结果,也有公有的和私有的两种作用范围。例如,在窗体中定义一个返回整型数据的私有Function函数:Priva
25、te Function PlusXY(x As Integer,yAs Integer)As Integer PlusXY=x+y End Function 2.调用 Function过程的调用方法如下:Dim I As Integer I=PlusXY(1,2),51,4.3.4 参数传递机制简介,大部分过程都含有参数。将Sub过程或Function过程定义中出现的变量名称为形式参数,而在调用时传递给Sub过程和Function过程的常量、变量或表达式称为实际参数。将参数以变量形式传递的过程称为参数传递。VB中参数传递机制有两种:一种是引用参数传递(默认),另一种是按值传递参数。,52,1.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 电大 VisualBasic 程序设计 VB 高级 语言 技巧
链接地址:https://www.31ppt.com/p-5932539.html