VB书稿第2章迷你计算器.docx
《VB书稿第2章迷你计算器.docx》由会员分享,可在线阅读,更多相关《VB书稿第2章迷你计算器.docx(56页珍藏版)》请在冰豆网上搜索。
VB书稿第2章迷你计算器
项目2迷你计算器
本章学习目标
●掌握VisualBasic6.0基本输入和输出控件。
●掌握VisualBasic6.0中的数据类型及其运算。
●掌握VisualBasic6.0程序设计基本控制结构。
在VisualBasic语言中,控件的主要功能是用来获取用户的输入信息和显示输出信息。
在建立VisualBasic6.0的应用程序时,应该首先设计代码的结构。
VisualBasic6.0将代码存储在3种不同的模块中:
窗体模块、标准模块和类模块。
在这三种模块中都可以包含:
声明(常数、变量、动态连接库DLL的声明)和过程(Sub、Function、Property过程)。
VisualBasic6.0虽然采用事件驱动调用相对划分得比较小的子过程,但是对于具体的过程本身,仍然要用到结构化程序设计的方法。
结构化程序设计包含三种基本结构:
顺序结构、选择结构和循环结构。
它们形成了工程的一种模块层次结构,可以较好地组织工程,同时也便于代码的维护。
本章将通过计算器的制作学习这些基本控件和数据运算以及代码控制结构的具体应用。
2.1案例分析
计算器是日常生活和学习中最常见的工具之一,在Windows操作系统中也有简单的计算器。
本节将通过分析计算器的工作过程,用VisualBasic6.0来制作简单的计算器。
用户首先需掌握VisualBasic6.0中的基本输入输出控件,那就是Label控件、Textbox控件和Command控件,这些都是计算器程序界面中必备的控件对象。
在本案例中,将要认识这些控件的基本属性、方法和事件,创建计算器程序的应用界面。
本案例的功能类似于Windows系统自带的计算器,除了实现加、减、乘、除四则运算外,还可以求平方根、求模(余数)和求次幂,“C”键清除操作,“=”键输出运算结果,如图2-1所示。
图2-1迷你计算器
2.2操作过程
1.界面设计
图2-2迷你计算器框架图
迷你计算器控件框架如图2-2所示。
其创建步骤如下:
(1)运行VisualBasic6.0后,在弹出的【新建工程】对话框中选择【标准EXE】,单击【确定】按钮。
(2)程序将创建一个名为“Form1”的工程窗口,用鼠标左键单击选中,然后将窗口拖放到合适的大小,这也是将来程序主窗口的大小(为方便起见,本书中一切鼠标的事件,如单击、拖动等,如果不加特殊说明,都是指鼠标左键事件)。
(3)从工具栏中向工程窗口添加1个Label控件、1个Textbox控件和4个Commandbutton控件。
(4)单击Command1控件,选择【编辑】/【复制】将其复制,再通过【编辑】/【粘贴】将复制的对象粘贴到工程窗口中。
这时,VisualBasic会询问“是否要创建控件数组”,选择“是”,则工程窗口中出现两个一模一样的Command1控件。
(5)继续选择【编辑】/【粘贴】菜单,直到产生11个Command1为止。
这些控件仅仅在其Index属性上有差别,因而对程序的编写十分方便。
创建控件数组是一个十分有用的编程技巧,本书在后面的例子中还将多次使用控件数组,读者要注意掌握这一技巧。
(6)按照相同的方法创建Command2控件数组。
排列好控件并调整大小后,得到大致如图2-2所示的程序界面。
2.设置对象属性
迷你计算器设置界面中对象的属性的步骤如下:
(1)选中Form1窗体,在【属性窗口】中找到【Caption】项,将其由“Form1”改为“迷你计算器”。
(2)将Label1的【Caption】属性设置为“迷你计算器”。
(3)将Command1控件数组中【Index】属性为0~9,【Caption】属性分别改为与其Index值相同,将【Index】属性为“10”的Command1控件的【Caption】属性改为“.”。
(4)将Command2控件数组中【Index】属性为0~6的控件的【Caption】属性分别改为与“+”、“-”、“*”、“/”、“Sqrt”、“%”、“X^Y”。
(5)将Command3控件的【Caption】属性改为“=”,将Command4控件的【Caption】属性改为“C”。
(6)在所有这些控件的外观属性中,Text1因为充当程序的输出部分,是最讲究的一个。
首先选中该控件,在【属性窗口】的【Text】选项中,将字符串“Text1”去掉,然后将其【Alignment】(对齐)属性改为“1靠向右边”,以符合大多数计算器的习惯。
接下来调整其【Font】(字体)属性至合适大小的字体。
许多类似的外观属性并没有强制性的规定,读者只需将其尽量设计得美观一些便可以了。
各个对象的属性设置如表2-1所示。
表2-1迷你计算器各对象属性
对象
属性
属性值
Form1
Caption
迷你计算器
Label1
Caption
迷你计算器
Font
华文行楷+小三
Backcolor
&H00ffc0c0&
Text1
Text
Font
TimesNewRoman
Forecolor
&H00c00000&
Commandbutton
Caption
各个数字及符号
Font
Arialblack+五号
3.代码实现
程序开始运行时便定义“Num1”、“Num2”、“Result”三个窗体通用变量来存放操作数和运算结果,以便于各个Command控件在事件中共同调用。
定义窗体通用变量Optnum来保存按下的运算符,以便在输出结果“=”时进行计算。
案例“迷你计算器”程序如下:
OptionExplicit‘通用声明部分
DimNum1,Num2,ResultAsDouble
DimOptnumAsInteger
PrivateSubCommand1_Click(IndexAsInteger)‘对命令按钮Command1控件数组的Click事件编写代码输入数值
IfIndex=10Then
Text1.Text=Text1.Text&"."
Else
Text1.Text=Text1.Text&Index
EndIf
EndSub
PrivateSubCommand2_Click(IndexAsInteger)‘对Command2控件数组的Click事件编写代码,通过窗体通用变量Optnum来记录要进行的运算
Optnum=Index
Num1=Cdbl(Text1.Text)
IfOptnum=4Then
Result=Sqr(Num1)
Text1.Text=Result
Else
Text1.Text=""
EndIf
EndSub
PrivateSubCommand3_Click()‘对Command3命令按钮的Click事件编写代码,求运算结果,并将运算结果通过Text1显示出来
Num2=Cdbl(Text1.Text)
SelectCaseOptnum
Case0
Result=Num1+Num2
Case1
Result=Num1-Num2
Case2
Result=Num1*Num2
Case3
Result=Num1/Num2
Case4
Case5
Result=Num1ModNum2
Case6
Result=Num1^Num2
EndSelect
Text1.Text=""
Text1.Text=Result
EndSub
PrivateSubCommand4_Click()
Num1=0
Num2=0
Result=0
Optnum=0
Text1.Text=""
EndSub
2.3相关知识
1.标签
标签(Label)
在VisualBasic6.0中应用较多,常用于显示用户不能编辑、修改的文本。
所以,Label控件可以用来标识窗体和窗体上的对象,通常用来标识那些本身不带标题(Caption)属性的控件,如Textbox、Scrollbar。
也可以用于显示处理结果、事件进程、帮助等信息。
其主要属性如表2-2所示。
表2-2标签的常用属性
属性项
说明
Name
标签对象名称
Alignment
设置【Caption】属性文本的对齐方式,0—左对齐,1—右对齐,2—中间对齐
Appearance
是否要用立体效果绘制,1—3D
Autosize
设置控件的大小是否随标题内容的大小自动调整,取值为True/False
Backcolor
设置背景色
Backstyle
设置背景模式,0—不透明,1—透明
Borderstyle
设置边界模式,0—无边界线,1—固定单线框
Caption
设置标题
Datafield
设置此对象链接到数据表的字段名称
Dataformat
设置此对象链接到数据表的字段数据格式
Datamember
设定一个特定的数据成员或从几个数据成员中返回
Datasource
设置该对象链接到数据源的名称
Dragicon
设置该命令按钮对象在拖动过程中鼠标的图标
Dragmode
设置拖动该对象的模式,0—Manual,1—Automatic
Enabled
设置控件是否对事件产生响应,取值为True/False,设为False时图标模糊
Forecolor
设置前景颜色
Font
设置字体及字号等
Height
设置对象的高度
标签也支持多种事件,但一般不为其编写事件过程。
2.文本框
文本框(Textbox)可以供用户输入数据,是VisualBasic6.0中显示和输入文本的主要机制,也是Windows用户界面中最常用的控件。
文本框提供了所有基本字处理功能,在Windows环境中几乎所有的输入动作都是利用文本框来完成的。
文本框是个相当灵活的输入工具,可以输入单行文本,也可以输入多行文本,还具有根据控件的大小自动换行以及添加基本格式的功能。
(1)文本框的属性
文本框可以输出、编辑、修改和输入信息。
其主要属性如表2-3所示。
表2-3文本框的属性
属性
说明
Text
设置文本框中显示的内容。
程序执行时,用户在文本框输入的内容会自动保存在该属性中
Locked
指定文本框是否可被编辑。
False(默认值)—可以编辑文本框中的文本;True—可以滚动和选择控件中的文本,但不能编辑。
Maxlength
设置允许在文本框中输入的最大字符数。
默认值为0,表示该单行文本框中字符串的长度只受操作系统内存的限制;若设置为大于0的数,表示能够输入的最大字符数目。
Multiline
设置是否可以输入多行文本。
True-以多行文本方式显示;False(默认)-以单行方式显示,超出文本框宽度的部分被截除。
按Ctrl+Enter可以插入一个空行。
Passwordchar
设置是否在控件中显示用户键入的字符。
默认时,该属性值为空字符串(不是空格),用户从键盘上输入的字符都可在文本框中显示出来。
Scrollbars
确定文本框中是否有垂直或水平滚动条。
0—文本框中没有滚动条;1—只有水平滚动条;2—只有垂直滚动条;3—同时具有水平和垂直滚动条。
Sellength
当前选中的字符数,只能在代码中使用。
值为0时,表示未选中任何字符
Selstart
定义选择文本的起始位置,只能在代码中使用。
第一个字符的位置为0,第二个字符的位置为1,以此类推。
Seltext
含有当前选中的文本字符串,只能在代码中使用。
(2)文本框事件和方法
文本框支持Click、Dblclick等鼠标事件,同时支持Change、Gotfocus、Lostfocus、Keypress事件,具体说明如表2-4所示。
表2-4文本框事件和方法
事件/方法
功能说明
Change事件
当在文本框中输入新信息或在程序中改变Text属性值时就会触发Change事件。
Gotfocus事件
按下Tab键或用鼠标单击该对象使它获得焦点(即处于活动状态)时,键盘上输入的每个字符都将在该文本框中显示出来。
只有当一个文本框被激活并且可见性为True时才能接收到焦点。
Lostfocus事件
按下Tab键或用鼠标单击其他对象使焦点离开该文本框时触发该事件。
用Change事件过程和Lostfocus事件过程都可以检查文本框的Text属性值,但后者更有效。
Keypress事件
该事件与键盘输入有关,适用于窗体和大部分控件,用来识别键入的字符,当在键盘上按下某个键时触发该事件。
Setfocus方法
该方法可以把光标移动到指定的文本框中。
当在窗体上建立了多个文本框后,可以用该方法把光标置于所需要的文本框。
3.命令按钮
VisualBasic6.0中的按钮控件是指命令按钮(Commandbutton)
,它是VisualBasic6.0应用程序中最常用的控件。
命令按钮用来接收用户的操作信息,触发相应的事件过程。
系统隐含命令按钮的名称为Commandx(其中X为1,2,3,……)。
(1)命令按钮的属性
在应用程序中,命令按钮通常用来在单击时执行指定的操作。
其主要属性如表2-5所示。
表2-5命令按钮控件属性
属性
说明
Cancel
设置该命令按钮是否为CancelButton,即在运行时按ESC键与单击该命令按钮的作用相同。
取值为True/False
Default
设置该命令按钮是否为窗体的默认按钮。
即在运行时按回车键与单击该命令按钮的作用相同。
取值为True/False
Style
设置对象的外观形式。
0—标准(只能显示文字);1—图形(既能显示文字,又能显示图形)。
Picture
设置命令按钮的图标,当Style=1时有效。
Downpicture
设置当控件处于按下状态时在控件中显示的图形,Style=1时有效
Disablepicture
设置命令按钮被禁止操作时显示的图标,当Style=1时有效。
(2)命令按钮常用的事件
①Click事件:
当用户用鼠标单击一个对象时,所触发的事件称之为Click事件。
②Mousedown事件:
鼠标位于按钮上并按下鼠标按钮时,所触发的事件称之为Mousedown事件。
③Mouseup事件:
释放鼠标按钮时,所触发的事件称之为Mouseup事件。
注意:
命令按钮不支持双击(Dblclick)事件。
实例2-1求两个整数的和:
分析:
两个整数可以通过两个文本框Text输入,通过单击“求和”命令按钮Command来驱动求和程序,并且将和数显示在第三个文本框Text中。
第二个命令按钮Command清除三个文本框Text的数值,通过三个标签Label来显示三个文本框Text的不同作用。
建立用户界面如图2-3所示。
图2-3求两个整数的和
对象建立好后,就要为其设置属性值。
本例中各控件对象的有关属性设置见表2-6,设置后的用户界面如图2-4所示。
表2-6例2-1的属性设置
默认控件名
标题Caption
文本Text
Form1
求两数和
Label1
被加数
Label2
加数
Label3
和
Text1
空白
Text2
空白
Text3
空白
Command1
求和
Command2
清屏
图2-4例2-1控件框架
建立了用户界面并为对象设置了属性后,就要考虑选择对象的事件和编写事件过程代码了。
根据本例分析:
(1)当单击“求和”按钮时进行求和,就要对“求和”按钮Command1对应的Click事件进行编程。
(2)当单击“清屏”按钮时,清除三个文本框的所有内容,就要对“清屏”按钮Command2对应的Click事件进行编程。
在代码窗口的两个过程体如下:
PrivateSubCommand1_Click()
DimX,Y,ZAsInteger
X=Val(Text1.Text)
Y=Val(Text2.Text)
Z=X+Y
Text3.Text=Z
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
EndSub
提示:
若要输入“加数”后回车求和,则需为Text2对象的Keypress事件编写求和代码:
PrivateSubText2_Keypress(KeyasciiAsInteger)
DimX,Y,ZAsInteger
IfKeyascii=13Then
X=Val(Text1.Text)
Y=Val(Text2.Text)
Z=X+Y
Text3.Text=Z
EndIf
EndSub
4.数据类型
数据既是计算机处理的对象,也是运算产生的结果。
为了更好地处理各种各样的数据,VisualBasic不但提供了丰富的标准数据类型,还可以由用户自定义所需的数据类型。
不同的数据类型所占的存储空间是不同的,选择使用合适的数据类型,可以优化代码的速度和大小。
另外,数据类型的不同,计算机对其处理的方法也不同,编程时需要对数据类型进行说明或者定义。
标准数据类型是系统定义的数据类型,表2-7中列出了VisualBasic支持的标准数据类型,包括它们占用的存储大小和取值范围。
表2-7VisualBasic的标准数据类型
数据类型
关键字
类型符
前缀
占字节数
范围
字节型
Byte
无
Byt
1
0~255
逻辑型
Boolean
无
Bln
2
True与False
整型
Integer
%
Int
2
-32767~32767
长整型
Long
&
Lng
4
-2147483648~2147483647
单精度型
Single
!
Sng
4
-3.402823E38~3.402823E38
双精度型
Double
#
Dbl
8
-1.79769313486232D308~
1.79769313486232D308
货币型
Currency
@
Cur
8
-922337203685477.5808~
922337203685477.5807
日期型
Date
无
Dtm
8
01/01/100~12/31/9999
字符型
String
$
Str
与串长有关
0~65535个字符
对象型
Object
无
Obj
4
任何对象
变体型
Variant
无
Vnt
根据需要分配
上述有效范围之一
各个数据类型的具体说明如下:
(1)数值数据类型
数值(Numeric)类型包含:
Integer、Long、Single、Double、Currency和Byte六种数据类型。
①Integer和Long数据类型存储的是整数值,整数运算速度快、精确,但表示范围小。
Integer类型可存放的最大整数是32767,当程序需要很大的整数时,比如记录当前中国的人口数,应采用Long型。
Long型比Integer类型的存储空间大,但占用的计算机存储资源也要多一些。
在VisualBasic中,整数表示形式:
+N[%][&],N是0~9的数字,%是整型的类型符,&是长整型的类型符,可省略。
②Single和Double数据类型用于存储浮点实数。
在计算机中,小数数据通常被称为浮点型数据。
浮点实数表示的范围大,但有误差,运算速度慢。
③Currency型是定点实数或整数,用于货币运算。
表示形式在数字后加@符号。
④Byte数据类型用于存储二进制数据。
(2)日期数据类型
日期(Date)类型的数据在内存中占用8个字节,用来保存日期和时间。
表示的日期范围是从公元100年1月1日到9999年12月31日,时间从0:
00:
00到23:
59:
59。
日期型数据依赖于区域设置,任何可辨认的文本日期值都可以存储为Date型数据,日期文字前后须加上符号“#”,例如,#10/12/2000#、#January1,2000#、#1996-5-15#等都是合法的日期数据。
此外,日期型数据还可以以数字序列表示,小数点左边的数字代表日期,而小数点右边的数字代表时间。
(3)逻辑数据类型
逻辑(Boolean)数据类型也称为布尔型,用于逻辑判断,它只有两个值True(-1)与False(0)。
(4)字符数据类型
字符(String)数据类型用于存放字符串,字符串两侧用双引号“"”作为分界符,分界符内是一个任意的字符串序列。
例如,"12345"、"程序设计"、"Abcd123"。
注意:
""和""是有区别的,前者表示空字符串,而后者表示一个空格的字符串。
(5)对象数据类型
对象(Object)数据类型以32位的地址形式存储,此地址为对象引用。
所谓对象引用,就是指对象的存储地址信息,通过这个地址可以访问这个对象的数据。
也就是说,对象数据类型只记录某一个数据的存储地址,并不是真正记录那个数据。
(6)变体数据类型
变体(Variant)数据类型是一种特殊的数据类型,为VisualBasic的数据处理增加了智能性,是所有未定义的变量的默认数据类型,它对数据的处理完全取决于程序上下文的需要。
它可以包括上述的数值型、日期型、对象型、字符型等数据类型。
要检测变体型变量中保存的数值究竟是什么类型,可以用函数Vartype()进行检测,根据它的返回值可确定是何数据类型。
5.常量
计算机在处理收据时,必须将数据装入内存,并对存放数据的内存单元进行命名,通过内存单元名来访问其中的数据。
变量或常量就是被命名的内存单元。
也就是说,使用这个内存单元的名(变量或常量)就相当于使用了存储于其中的数据了。
在VisualBasic中,命名一个常量或变量的规则如下:
●必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255
个字符。
●不要使用VisualBasic中的关键字。
●VisualBasic中不区分变量名的大小写。
一般变量首字母用大写字母,其余用小写
字母表示。
常量全部用大写字母表示。
●为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类
型,对阅读程序代码的人来说,它会有超乎寻常的帮助。
缩写前缀的约定参见表2-7。
例如,Strmyname、Intcount和Blnto等都是合法的变量名。
按前缀约定它们分别为字符型、整型和逻辑型。
下列是错误或使用不当的变量名:
3xy′以数字开头
X-Y′不允许出现减号
ZhangFei′不允许出现空格
Dim′VisualBasic的关键字
Sin′虽然允许,但尽量不要使用,避免和VisualBasic的标准函数名相同
常量是在程序运行中不变的量,常量可分