第 3章 简单 VB程序设计众所周知,VB应用程序的执行是由事件驱动的,
当用户触发某一事件时,执行相应的事件过程,这些事件过程之间并没有特定的执行次序 。 但在每一个事件过程内部,是有一定的执行控制流程的,这就是通常所说的三种基本结构:顺序结构,分支结构,循环结构 。 顺序结构是最简单的一种结构,该结构按语句排列的先后顺序执行 。 本章的主要内容有,VB最基本的几个对象,与顺序结构有关的语句和方法 。 通过本章的学习,可以进行简单 VB程序设计 。
退出
3.1 窗 体
3.2 命令按钮
3.3 标 签
3.4 文本框
3.5 赋值语句
3.6 Print方法
3.7 输入框
3.8 消息框
3.9 注释语句、结束语句
3.10 程序调试
3.1 窗 体创建 VB应用程序的第一步是创建用户界面 。 用户界面的基础是窗体,各种控件对象必须建立在窗体上 。
启动 VB后,即在屏幕上显示一个窗体,如图 3-1所示 。
3.1.1 窗体的主要属性窗体的属性决定了窗体的外观和操作 。 窗体的大部分属性可用两种方法来设置:通过属性窗口设置和通过程序代码设置 。 有少量的属性不能在程序代码中设置 。
( 1) Caption 属性设置窗体的标题内容 。 标题内容应概括说明本窗体作用 。
( 2) MaxButton 属性和 MinButton 属性
MaxButton属性为 True,窗体右上角有最大化按钮;为 False时,无最大化按钮 。
MinButton属性为 True,窗体右上角有最小化按钮;为 False时,无最小化按钮 。
( 3) BorderStyle 属性决定窗体边框式样及窗体是否能调整大小。
( 4) BackColor属性和 ForeColor 属性
BackColor属性设置窗体的背景颜色,ForColor
属性设置窗体的前景颜色。窗体的前景颜色是执行
Print方法时所显示文本的颜色。
( 5) Height属性和 Width属性设置窗体的初始高度和宽度。其单位为 Twip。
1Twip=1/20点 =1/1440英寸 =1/567cm。
( 6) Left属性和 Top属性用于设置窗体左边框距屏幕左边界的距离和窗体顶边距屏幕顶端的距离。其单位为 Twip。
( 7) Name(名称)属性设置窗体的名称,在程序代码中用这个名称引用该窗体。新建工程时,窗体的名称缺省为 Form1;添加第二个窗体,其名称缺省为 Form2,依次类推。为了便于识别,用户通常给 Name 属性设置一个有实际意义的名称。
( 8) Enabled属性属性值为 True或 False,设置对象是否能够对用户产生的事件做出反应。一般在程序中设置,用于临时屏蔽对窗体或其它控件的的控制。
( 9) Moveable属性属性值为 True或 False,设置是否可以移动窗体。
( 10) Visible属性属性值为 True或 False,设置窗体是否被显示。用户可用该属性在程序代码中控制窗体的隐现。
( 11) Picture属性设置在窗体中显示的图片。单击 Picture属性右边的按钮,弹出“加载图片”对话框,用户可选择一个图片文件作为窗体的背景图片。若在程序中设置该属性的值,需要使用 LoadPicture函数。
( 12) WindowState属性设置窗体启动后的大小状态。
在 VB中,虽然不同的对象有不同的属性集合,但有一些属性,如 Name,Enabled,Visible,Height、
Width,Left,Top等,其它控件也有,且具有相似的作用。在后续的章节中,主要介绍各种控件常用的特殊属性。
3.1.2 事件窗体最常用的事件有 3种,Click ( 单击 ),
DbClick( 双击 ),Load( 装入 ) 。
1,Click事件程序运行后,单击窗体触发该事件 。
2,DbClick事件程序运行后,双击窗体触发该事件 。
3,Load事件
Load事件是窗体被装入内存工作区时触发的事件。
如果这个事件过程存在,就马上执行它。 Load事件过程通常用于启动程序时,对属性、变量的初始化以及装载数据等。
【 例 3.1】 窗体上无最大化、最小化按钮,程序运行后,在窗体上装入一幅图片作为背景,当单击窗体时,窗体变宽;当双击窗体时,则退出。程序运行界面如图 3-2所示。
事件过程如下:
Private Sub Form_Load( ) '装入图片
Form1.Picture = LoadPicture ( "c,
\pic\Changcheng.wmf")
End Sub
Private Sub Form_click( ) ' 单击窗体
Form1.Width = Form1.Width + 1000
End Sub
Private Sub Form_DblClick( ) ' 双击窗体
End
End Sub
说明:上机时,可通过查找文件的方法找一个图片文件,参照本例中的格式输入即可 。
3.2 命令按钮在 VB应用程序中,命令按钮是使用最多的对象之一,常常用它接受用户的操作信息,触发相应的事件过程,以实现指定的功能 。
3.2.1 属性
1,Caption属性设定命令按钮上显示的文本 。
2,Default属性该属性用于设置默认命令按钮 。
3,Style属性和 Picture属性命令按钮上除了可以显示文字外,还可以显示图形 。 若要显示图形,首先应将 Style 属性设置为 1,然后在 Picture属性中设置要显示的图形文件 。
4,Value属性该属性只能在程序运行期间引用或设置 。 True表示被按下,False( 默认 ) 表示未被按下 。
3.2.2 事件最常用的事件是 Click事件 。
3.3 标 签标签 ( Label) 主要用于显示不需要用户修改的文本 。 所以,标签可以用来标示窗体及窗体上的对象,
如为文本框,列表框等添加描述性的文字,或者作为窗体的说明文字 。
3.3.1 属性
1,Caption属性设置标签要显示的内容 。 它是标签的主要属性 。
2,BorderStyle属性默认值为 0,标签无边框;设置为 1时,标签有立体边框。
3,Autosize属性该属性用于设置标签是否自动改变尺寸以适应其内容。
4,Alignment属性确定标签中内容的对齐方式 。
5,BackStyle属性该属性用于设置背景是否透明 。
3.3.2 事件常用 Click,DbClick事件 。
【 例 3.2】 修改例 3.1,在图片上加提示信息,请单击图片,,程序其它功能不变 。 程序运行界面如图 3-2
所示 。
操作如下:在窗体上添加一个标签,将其 Caption
属性设置为,请单击图片,,BackStyle属性设置为 0
( 透明 ),程序代码不变 。
3.4 文本框文本框 ( TextBox) 在窗体中为用户提供一个既能显示文本又能编辑文本的区域 。 在文本框内,用户可以用鼠标,键盘按常用的方法对文字进行编辑,例如进行输入,删除,选择,复制及粘贴等各种操作 。
3.4.1 属性
1,Text属性设置文本框中显示的内容 。
2,Locked属性设置文本框中的内容是否可编辑。
3,Maxlength属性设置文本框中允许输入的最大字符数 。
4,MultiLine属性决定文本框是否允许接收多行文本 。
5,PassWordChar属性当 MultiLine为 False时,该属性可设置显示在文本框中的替代符 。
6,ScrollBars属性决定文本框中是否有滚动条 。
3.4.2 事件文本框除支持 Click,DbClick事件,常用的还有
Change,LostFocus事件 。
1,Change事件当用户输入新内容,或程序对文本框的 Text属性重新赋值,从而改变文本框的 Text属性时触发该事件 。
2,LostFocus事件当用户按下 [Tab]键时光标离开文本框,或用鼠标选择其它对象时触发该事件,称为,失去焦点,事件 。
3.4.3 方法文本框最常用的方法是 SetFocus,使用该方法可把光标移到指定的文本框中,使之获得焦点 。 当使用多个文本框时,用该方法可把光标移到所需要的的文本框中 。 其使用格式为:
1.对象,SetFocus
【 例 3.3】 程序运行后,随着用户的输入,标签中同步显示出用户对文本框的内容更新的次数 。 运行效果如图 3-4所示 。
2.编写事件过程如下:
Private Sub Text1_Change( )
Static i%
i = i + 1
Label1.Caption = i
End Sub
请思考:标签中显示的数字是文本框中显示的字符个数吗?
3.5 赋值语句赋值语句是 VB程序最常用,最基本的语句,它能为变量提供数据 。 另外,若要在程序代码中设置对象的属性,也要使用赋值语句 。
赋值语句有两种格式:
格式 1,变量名 =表达式格式 2,[对象名,]属性名 =表达式赋值语句的作用是:首先计算,=”右边表达式的值,然后将该值赋给,=”左边的变量或对象的属性。
在格式 2中,若对象名省略,则默认对象为当前窗体。
例如:
x=2 ' 把 2赋给 x
y=x*3 ' 计算 x*3的值,
得 6,把 6赋给 y
x=x+1 ' 计算 x+1的值,得 3,把 3赋给 x
a$= "Hello" ' 把,Hello”赋给 a$
Text1.Text="你好! " ' 把“你好!”
赋给 Text1的 Text属性
【 例 3.4 】 已知三角形三边 a,b,c的长,求三角形的面积,输出三条边长及面积 。
分析:应用程序的界面应该能让用户输入三边的长,程序在接收用户输入的数据后,利用数学公式对数据进行计算,并把结果输出到屏幕上 。 已知三角形三边 a,b,c的长,求三角形的面积的公式为:
其中 p=( a+b+c) /2。
( 1) 界面设计在窗体上建立 5个标签,3个文本框和 1个命令按钮 。
设置各对象的属性,如表 3-3所示 。
))()(( cpbpapps
设计完成的界面如图 3-5所示。
( 2)编写事件过程如下:
Private Sub Command1_Click()
Dim a!,b!,c!,p!,s!
a = Text1.Text
b = Text2.Text
c = Text3.Text
p =( a + b + c) / 2
s = Sqr( p *( p - a) *( p - b) *( p - c))
Label5.Caption = s
End Sub
3.6 Print方法
3.6.1 Print的格式及功能格式,[对象名,]Print [表达式列表 ]
功能:在对象上输出表达式的值 。
说明:
( 1) 对象名:可以是 Form( 窗体 ),Debug( 立即窗口 ),Picture( 图片框 ),Printer( 打印机 ) 。
省略此项,表示在当前窗体上输出 。 例如:
Print "23*2="; 23*2 ' 在当前窗体上输出 23*2= 46
Picture1.Print "Good "
' 在图片框 Picture1上输出 Good
Printer.Print "Morning" ' 在打印机上输出
Morning
( 2)表达式列表:是一个或多个表达式,若为多个表达式,则各表达式之间用“,”或“;”隔开。
省略此项,则输出一空行。
( 3)用“,”分隔各表达式时,各项在以 14个字符位置为单位划分出的区段中输出,每个区段输出一项;用“;”分隔各表达式时,各项按紧凑格式输出。
( 4)如果在语句行末尾有“;”,则下一个 Print
输出的内容,将紧跟在当前 Print输出内容后面;如果在语句行末尾有“,”,则下一个 Print输出的内容,
将在当前 Print输出内容的下一区段输出;如果在语句行末尾无分隔符,则输出完本语句内容后换行,即在新的一行输出下一个 Print的内容。例如:
Print 1; 2; 3
Print 4,5,
Print 6
Print 7,8
Print
Print 9,10
输出结果为:
1 2 3
4 5 6
7 8
9 10
( 3)定位输出:在 Print方法中,可以使用 Tab函数对输出项进行定位。
例如:
Print Tab( 10); "姓名 "; Tab( 25); "年龄 "
则“姓名”和“年龄”分别从当前行的第 10列和第 25列开始输出。
输出结果如下:
姓名 年龄
Print方法中,还可以使用 Spc函数,例如:
Print "后面有 8个空格 "; Spc( 8) ; "前面有 8个空格 "
输出结果如下:
后面有 8个空格 前面有 8个空格
3.6.2 Cls方法格式,[对象名,]Cls
功能,Cls方法清除 Print方法显示的文本或在图片框中显示的图形,并把输出位置移到对象的左上角 。
格式中的对象可以是窗体或图片框,如果省略对象名,
则清除当前窗体的显示内容 。
3.7 输入框我们知道,文本框可以接收用户的输入 。 输入框也可以接受用户的输入,但是其风格和用法有别于文本框 。 VB提供的 InputBox函数可生成输入框 。
例如,p$=InputBox( "请输入密码 ","密码框 ")
执行该语句后,屏幕上显示如图 3-6所示的输入框 。
每执行一次 InputBox函数,用户只能输入一个数据,另外,输入框的样式是固定的,用户不能改变 。
用户能改变的是输入框的,提示,和,标题,的内容,
,提示,和,标题,都是字符串表达式 。
InputBox函数的一般格式:
InputBox( 提示 [,标题 ][,缺省值 ][,x坐标位置 ][,y坐标位置 ])
需要注意的是:各项参数次序必须一一对应,除了“提示”不能省略外,其余各项均可省略,但省略部分也要用逗号占位符跳过。
例如,f$ = InputBox( "第一行 " & vbNewLine &
"第二行 ",,"ddd",200,200)
运行时屏幕的显示如图 3-7所示。
【 例 3.5】 已知圆半径,求圆周长和圆面积。
( 1)界面设计在窗体上建立两个标签、两个文本框、两个命令按钮。设置各对象的属性如表 3-4所示。
( 2) 编写事件过程如下:
Private Sub Command1_Click( )
Dim r!,c!,a!
r = InputBox( "请输入半径 ","输入框 ")
c = 2 * r * 3.14159
a = 3.14159 * r ^ 2
Text1.Text = c
Text2.Text = a
End Sub
Private Sub Command2_Click( )
End
End Sub
3.8 消息框执行 VB提供的 MsgBox函数,可以在屏幕上出现一个消息框,消息框通知用户消息并等待用户来选择消息框中的按钮,MsgBox函数返回一个与用户所选按钮相对应的整数 。
MsgBox函数的格式:
MsgBox( 提示,[,按钮数值 ][,标题 ])
例如,inta=MsgBox(“密码错,,21,,密码核对,)
执行该语句后,屏幕上显示如图 3-10所示的消息框 。
在 MsgBox函数格式中,,提示,和,标题,的含义同 InputBox函数,,按钮数值,的含义复杂一些,
,按钮数值,指定按钮的数目及类型,使用的图标样式及缺省按钮是什么等,,按钮数值,的缺省值是 0。
本例,按钮数值,是 21,其含义是:消息框中有,×,
图标,有,重试,及,取消,两个按钮,缺省按钮是
,重试,按钮 。 当用户单击消息框中的一个按钮后,
消息框即从屏幕上消失 。 在上面的语句中,将函数的返回值赋给了变量 inta,在程序中可引用 inta作相应的处理 。
下面对,按钮数值,作进一步的解释 。
,按钮数值,是 3个数值之和,这 3个数值分别代表按钮的数目和类型,使用的图标样式以及缺省按钮是什么 。
“按钮数值”是从上面 3个表中各取一个数相加而得。注意:每个表只能取一个数。例如“按钮数值”
是 21,系统会自动把它分解成分别属于上面 3个表中的
3个值 5,16,0。 21=5+16+0,这种分解是唯一的。
在程序中,一般把“按钮数值”写成符号常数相加的形式,如把 21写成
VbRetryCancel+vbCritical+vbDefaultButton1,这样可使程序含义清楚,从而增加程序的可读性。当然,
把 21写成 5+16+0也是允许的。
MsgBox函数的返回值是根据用户单击哪个按钮而定的,见表 3-8。
通常,在程序中要根据 MsgBox函数返回值的不同作不同的处理,这需要用到第 4章中介绍的选择结构方面的知识。
MsgBox也可以写成语句形式,例如,MsgBox "密码错 ","密码核对 "
执行此语句也产生一个消息框,如图 3-11所示 。
MsgBox语句没有返回值,因此常用于比较简单的信息提示 。
3.9 注释语句、结束语句
3.9.1 注释语句为了提高程序的可读性,通常在程序的适当位置加上必要的注释 。 在 VB中用,'”或 Rem来标识一条注释语句,格式为:
' | Rem <注释内容 >
例如:
Rem 2002年编写
Private Sub Form_click()
Dim a$ ' 定义一个字符串变量
a="Visual Basic6.0中文版 " ' 为变量赋值
print a ' 打印 a的内容
End Sub
3.9.2 结束语句格式,End
End语句用来结束程序的执行,并关闭已打开的文件。
例如:
Private Sub Command3_Click()
End
End Sub
该过程用于结束程序,即单击命令按钮
Command3时,结束程序的运行。
3.10 程序调试在程序中发现错误并排除错误的过程叫做程序调试 。 VB提供了丰富的调试手段,可以方便地跟踪程序的运行,排除程序错误 。
3.10.1 程序错误程序设计中常见的错误可分为以下 3种:编译错误,
运行错误和逻辑错误 。
1.编译错误编译错误指 VB在编译程序过程中出现的错误 。 此类错误是由于不正确的构造代码而产生的,比如关键字输入错,遗漏了必需的标点符号等 。
例如,Printt "hello"语句会导致编译错误 。
2.运行错误运行错误指编译通过后,运行代码时发生的错误 。
此类错误通常是代码执行了非法操作或某些操作失败 。
比如,要打开的文件没找到,除法运算时除数为零,
数据溢出等 。
例如,print 245*1000语句 。
3.逻辑错误程序运行后,得不到应有的结果,这说明程序存在逻辑错误,逻辑错误是由于程序结构或算法错误而引起的 。
例如,把语句 s=s+l中的英文字母 l写成了数字 1。
3.10.2 3种模式
VB开发环境有 3种模式:设计模式,运行模式和中断模式 。 开发环境中的标题能够显示出当前所处的模式 。
1.设计模式
2.运行模式
3.中断模式
3.10.3 调试方法使用 VB提供的调试工具与调试手段,可提高程序调试的效率 。
1.逐语句执行
2.设置断点
3.使用调试窗口
VB提供了 3个供用户调试程序使用的调试窗口:
立即窗口、本地窗口和监视窗口。可以利用这些窗口观察有关变量的值。可单击“视图”菜单中的相应命令打开它们。
( 1)立即窗口
( 2)本地窗口
( 3)监视窗口