第2章 Visual Basic程序设计概述
【学习要点】
l 程序设计方法的发展。
l Visual Basic对象及其属性、事件与方法。
l 窗体对象及其属性、事件与方法。
l 基本控件。
l 创建Visual Basic应用程序的基本步骤。
【学习目标】
l 了解程序设计方法的发展。
l 掌握Visual Basic对象及其属性、事件与方法。
l 掌握基本控件及其属性、事件与方法。
l 掌握创建Visual Basic应用程序的基本步骤。
2.1 程序设计方法发展简述
自从1946年世界上第一台电子计算机ENIAC诞生以来,在这短短的70年中,计算机科学得到了迅猛的发展,计算机的应用已经渗透到社会的各个领域。计算机之所以能有如此强大的功能,除了可以归因于计算机硬件系统功能的日益强大之外,另一个很重要的原因,就是计算机软件系统的高速发展。软件系统发展的关键,在于程序设计方法学的发展。程序设计方法经历了早期手工作坊式的程序设计、面向过程的结构化程序设计到面向对象的可视化程序设计等发展阶段。下面对每一阶段进行简单的介绍。
2.1.1 早期的程序设计
20世纪50年代,计算机唯一能够识别的语言是机器语言,用机器语言编写程序是相当麻烦的,其程序设计是繁杂而又枯燥的劳动,得花费大量的时间来编写和调试程序,所以,后期逐渐被用汇编程序设计所代替。虽然汇编程序在记忆、直观性方面有了提高,但在本质上并没有什么飞跃。直到第一个高级语言FORTRAN的出现,大大简化了程序设计的过程。用高级语言编写的程序,基本上与机器无关,软件开发人员可以摆脱机器本身的特性限制,而集中精力于算法本身。高级语言随着计算机的推广应用,渗透到各学科和各技术领域,一系列不同程序风格和不同服务对象的专业语言和通用语言大量出现,推动了程序设计方法学的发展。
2.1.2 结构化程序设计
1969年,荷兰的计算机科学家Dijkstra首先提出了结构化程序设计的思想和概念,从程序结构上来研究和改变传统的设计方法。结构化程序设计的思想是:自顶向下、逐步求精。其程序结构是按功能划分为若干个基本模块基本程序,这些模块形成一个树状结构,各模块之间的关系尽可能简单,在功能上相对独立,每一个模块内部均是由顺序、选择、循环三种基本结构组成的,每种结构都是单入口和单出口,限制使用Goto语句,整个程序如一串珠子一样,依次串连而成。
结构化程序设计由于采用了模块分化与功能分解,以及自顶向下、分而治之的方法,因而,可将一个较复杂的问题分解为若干个子问题,各子问题分别由不同的人员来解决,从而提高了编程速度,并且便于程序的调试,有利于软件的开发和维护。
我们知道,客观世界中的问题是错综复杂和不断变化的,软件开发人员开发的软件往往不是一成不变的。随着社会的发展,用户对软件提出了更多的要求,因此,软件的更新日益加快。而结构化的程序设计中,由于数据与操作的分离,使程序的可重用性差,维护代价高,不便于程序的更新换代。
为了克服这一缺点,人们又提出了面向对象的程序设计思想。
2.1.3 面向对象程序设计
面向对象的程序设计是20世纪80年代初提出的,起源于Smalltalk语言,以降低程序的复杂性、提高软件的开发效率为目标。
面向对象的程序设计思想是:注重对象、抽象成类。在程序系统中,将客观世界中的事物看成对象,对象是由数据及对数据的操作构成的一个不可分离的整体。对同类型的对象抽象出其共性,形成类。类中大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行联系。
面向对象的程序设计通过增加软件的可扩充性和可重用性,来改善并提高程序员的生产能力,并能控制软件维护的复杂性和开销。这种方法是立足于结构化程序设计,在更高、更抽象的层次上去解决问题的。
2.2 Visual Basic的对象及其属性、事件和方法
2.2.1 Visual Basic的对象
在Visual Basic有时简写为VB面向对象的程序设计中,"对象"是系统中的基本运行实体。在现实世界中,任何一个实体都是对象。例如,一个人、一本书、一部手机等。为了区分和标识不同的对象,每个对象都有一个属于自己的名字,称为对象名。而每个对象都有描述其特征的属性和附属于它的行为。例如,一个人有身高、体重、年龄等属性,又有行走、跑跳、说话等行为。这些都可以在Visual Basic面向对象的程序设计中用对象及其属性、方法模拟出来。
Visual Basic中的对象分为窗体和控件两大类。窗体就是窗口本身,是产生图形界面的基础,是屏幕上的一个矩形区域;控件则是窗体上构成图形用户界面的一些基本组成部件,如标签、命令按钮、文本框等。
2.2.2 对象的属性、事件和方法
一个完整的对象包含了属性、事件和方法,这三个方面称为对象的三要素。
1. 对象的属性
属性即对象的特性描述;不同的对象有不同的属性。每个属性的取值称为属性值,不同的对象,其同一属性的属性值也不相同。例如,有两部不同类型的手机,可以用显示屏尺寸、CPU的频率、电池容量等属性来分辨其差异。
在程序中设置属性的语法格式为:
对象名.属性名 = 属性值
例如:
Label1.Caption = "欢迎使用Visual Basic 6.0"
这里,Label1是标签对象名,Caption是标签对象属性名,表示"标题";而"欢迎使用Visual Basic 6.0"是属性值。
又如:
Text1.Visible = False
这里,Text1是对象名,代表文本框控件;Visible是属性名,表示"可见性";False是属性值,表示对象不显示。
2. 对象的事件
事件是指由系统事先设定的、能为对象识别和响应的动作。事件发生在用户与应用程序交互时,例如,单击窗体、移动鼠标、获得焦点等,都是一些事件。也有部分事件由系统产生,不需要用户激发,如定时器事件、窗体装载事件等。
在程序中,设置事件的一般格式为:
Private Sub 对象名_事件名[参数列表]
''事件过程开始
...程序代码
End Sub ''事件过程结束
其中,事件过程开始和结束是由系统自动生成的,程序员只需要在事件过程中编写对事件做出响应的程序代码即可。
例如:
Private Sub Label1_Click
Label1.Caption = "你好"
Label1.Height = 800
Label1.Width = 3000
End Sub
这里,操作的对象是Label1标签,事件是单击事件Click。又如:
Private Sub Form_MouseDownButton As Integer, Shift As Integer, X As Single, Y
As Single
Text2.Text = "你按下了鼠标,如果你释放鼠标,会有惊喜发现"
End Sub
这里,操作的对象是Form窗体,事件是鼠标按下事件MouseDown。Button、Shift、X、Y是参数,用来接收鼠标的信息。具体的使用方法,将在后续章节中介绍。
3. 对象的方法
方法是用来完成一定操作的一段程序。即在Visual Basic中将一些已经编写好的通用的过程和函数代码封装起来,供用户直接调用。这给用户编程带来了很大方便。因为方法是面向对象的,所以在调用时,要指明对象。
对方法调用的一般格式为:
对象名.方法[参数列表]
例如:
Form1.Print "思路、方法比知识更重要"
这里,Form1是方法的对象,Print是窗体的方法之一,将在窗体上输出双引号里的信息。又如:
Picture1.Cls
这里,Picture1图片框是方法的对象,Cls是图片框的方法,用来清除图片框上的所有信息。
4. 三要素的比较
1 属性和方法。
l 相同点:在使用上,都是用小数点分隔对象名称与属性名称。
l 不同点:属性是一个具有特殊用途的内定变量,是"名词";而方法是特殊用途的内定命令,是"动词"。
2 事件与方法的区别:
l 事件使用下画线符号"_"分隔对象名与事件名称,而方法使用小数点来分隔。
l 事件由事件驱动,而方法由程序驱动。
l 事件代码由设计者编写,而方法一般由系统预定。
2.3 窗体对象及其属性、事件与方法
窗体是设计图形用户界面的基本平台,所有的控件都放置在窗体上,是运行时用户与应用程序交流的桥梁。窗体有自己的属性、事件和方法。下面分别介绍窗体的属性、事件和方法。
2.3.1 窗体的属性
窗体属性的设置决定了窗体的外观和操作。设置窗体属性的方法有两种:一是通过属性窗口进行设置;二是在窗体事件过程中通过代码来设置。窗体对象及属性如图2-1所示。
图2-1 窗体对象及属性
窗体的左上角是窗体的标题,系统自动将窗体标题设置为Form1,但可以通过修改窗体的Caption属性来改变窗体的标题。表2-1是窗体对象的常用属性说明。
表2-1 窗体对象的常用属性说明
属 性
类 型
说 明
Name
字符型
窗体的名称。窗体和所有控件在创建时由VB自动提供一个默认名称,只能在属性窗口中设置
Caption
字符型
窗体标题栏上显示的文字
Width
数值型
窗体的水平宽度
Height
数值型
窗体的垂直高度
Left
数值型
窗体左上角距屏幕左边的距离
Top
数值型
窗体左上角距屏幕顶部的距离
ForeColor
数值型
窗体工作区的前景色,即正文颜色
BackColor
数值型
窗体工作区的背景色
Enabled
逻辑型
决定窗体是否响应用户的事件。
True:能响应用户事件;False:不能响应用户事件
Visible
逻辑型
决定运行后窗体是否可见。
True:窗体可见;False:窗体隐藏
Font
详细内容见下面正文中的说明
MaxButton
逻辑型
用于设置窗体右上角的最大化按钮只能在属性窗口中设置。
True:窗体右上角有最大化按钮;False:窗体右上角无最大化按钮
MinButton
逻辑型
用于设置窗体右上角的最小化按钮只能在属性窗口中设置。
True:窗体右上角有最小化按钮;False:窗体右上角无最小化按钮
BorderStyle
数值型
设定窗体边界的样式。
0:无边框,位置、大小固定;1:单线,大小固定;2:可调整;3:固定大小的对话框;4:固定大小的工具窗口;5:可调整的工具窗口
Picture
字符型
设置将要显示在窗体上的图形的文件名和路径
WindowState
数值型
程序运行后窗体以什么状态显示。0:正常,窗体为设计阶段大小;1:最小化状态,窗体缩小为图标;2:最大化状态,窗体占满整个屏幕
其中,Font属性包含6个子属性。
l FontName:字符型,用于设置窗体或对象上文本的字体系统默认为宋体。
l FontSize:整型,用于设置窗体或对象上文本的字体大小。
l FontBold:逻辑型,该属性值为True时,设置窗体或对象上显示的文本为粗体。
l FontItalic:逻辑型,该属性值为True时,设置窗体或对象上显示的文本为斜体。
l FontStrikethru:逻辑型,该属性值为True时,设置窗体或对象上显示的文本加删除线。
l FontUnderline:逻辑型,该属性值为True时,设置窗体或对象上显示的文本带有下画线。
2.3.2 窗体的事件
与窗体有关的事件较多,其中最常见的有三种:Click单击、DblClick双击和Load装入。
1. Click事件
用鼠标左键单击窗体时,触发Click事件。
窗体Click事件过程的格式为:
Private Sub Form_Click
...
End Sub
2. DblClick事件
用鼠标左键双击窗体时触发DblClick事件。
窗体DblClick事件过程的格式为:
Private Sub Form_DblClick
...
End Sub
3. Load事件
当应用程序启动时,自动触发Load事件,它由系统操作触发或通过Load语句触发。该事件通常用来在启动应用程序时对属性和变量进行初始化。
窗体Load事件过程的格式为:
Private Sub Form_Load
...
End Sub
【例2-1】窗体单击事件示例。代码如下:
Private Sub Form_Click
Caption = "窗体单击事件" ''窗体名可以省略
FontSize = 48
FontName = "宋体"
Forml.Print "欢迎使用Visual Basic!"
End Sub
思考:自己尝试让程序启动时在窗体上输出"欢迎使用Visual
Basic",怎么编程?
【例2-2】窗体无最大化和最小化按钮,窗体装入时,窗体显示"装入图片",并装入一张图片,标题栏显示"装入窗体";当用户单击窗体后,在标题栏显示"鼠标单击",改变窗体图片,并在窗体上显示"欢迎使用VB";当用户双击窗体时,在标题栏中显示"双击窗体",去除窗体的图片,并在窗体中显示"结束使用VB"。程序运行界面如图2-2a、b、c所示。
a Load事件的运行效果 b Click事件的运行效果 c DblClick事件的运行效果
图2-2 运行界面
对象属性设置如表2-2所示。
表2-2 对象属性设置
对 象
属 性
属 性 值
Form1
MinButton
False
MaxButton
False
程序代码如下:
Private Sub Form_Load
Form1.Caption = "装入窗体"
Form1.Picture = LoadPictureApp.Path
"\图片1.jpg"
Form1.Print "装入图片"
End Sub
Private Sub Form_Click
Form1.Caption = "鼠标单击"
Form1.Picture = LoadPictureApp.Path
"\图片2.jpg"
Form1.Print "欢迎使用VB"
End Sub
Private Sub Form_DblClick
Form1.Caption = "双击窗体"
Form1.Picture =
LoadPicture""
Form1.Print "结束使用VB"
End Sub
提示: App.Path表示装入的图片文件与应用程序在同一文件夹。若运行时无该文件,系统会显示"文件未找到"的信息。用户可以通过查找文件的方法,将所需文件复制到与应用程序相同的文件夹下。
2.3.3 窗体的常用方法
窗体的方法是指窗体可以执行的动作和行为,窗体常用的方法如下。
1 Print方法:该方法用来在窗体上输出数据。
其格式为:
[窗体名.]Print[表达式列表]
2 Cls方法:用来清除窗体上用Print方法显示的数据或用绘图方法后续章节介绍所画的图形。
其格式为:
[窗体名.]Cls
3 Move方法:用来移动窗体对象的位置。
其格式为:
[窗体名.]Moveleft as single, [top], [width], [height]
例如,要将窗体移动到屏幕的100,100处,并使其大小为高600,宽800,可使用如下语句:
Form1.Move 100, 100, 600, 800
提示: 以上常用方法格式中,若为当前窗体,则窗体名可以省略。
4 Show方法:用来在屏幕上显示一个窗体用在多窗体工程中。其格式为:
窗体名.Show[Modal], [OwnerForm]
5 Hide方法:用于隐藏指定的窗体用在多窗体工程中。其格式为:
窗体名.Hide
【例2-3】窗体常用方法示例。
在窗体上创建两个命令按钮,名称分别为"输出"、"清除",在命令按钮中编写适当的事件过程,在单击"输出"按钮时,在窗体上输出"这里的世界真精彩!",单击"清除"按钮时,清除窗体上输出的所有信息。程序代码如下:
Private Sub Command1_Click
Print "这里的世界真精彩!"
End Sub
Private Sub Command2_Click
Cls
End Sub
运行结果如图2-3所示。
图2-3 窗体运行界面
2.4 基 本 控 件
在Visual Basic控件中,标签、文本框、命令按钮这3个基本控件是大多数应用程序中经常使用的。本节分别介绍它们的常用属性、事件和方法及具体的应用。
2.4.1 标签
标签Label主要是用来显示文本信息的,通常用来标注本身不具有Caption属性的其他控件例如文本框控件,起到解释和说明的作用。
1. 标签的属性
这里介绍标签的几个主要属性,如表2-3所示。
表2-3 标签的几个主要属性
属 性
类 型
说 明
Name
字符型
标签的名称
Caption
字符型
设置要在标签上显示的文字
AutoSize
逻辑型
使标签能够自动水平扩充,来适应标签上显示的文字。
True:根据标题文字自动调整标签控件的大小;False:控件大小不变
Alignment
数值型
标签中文本的对齐方式。
0:靠左对齐;1:靠右对齐;2:居中对齐
BorderStyle
数值型
设定外框的样式。0:无框线;1:单线固定
BackStyle
数值型
设置背景样式。0:透明;1:不透明
2. 标签的事件
标签可以接受的有Click单击、DblClick双击等事件。但标签只用于显示文字,因此,一般不需要编写事件过程。
【例2-4】在窗体Form1上画一个名为L1的标签,标题为"学习",如图2-4所示。标签具有边框;程序运行后,用鼠标单击标签,则标签的内容改为"爱拼才会赢!"。
图2-4 标签例题界面
程序代码如下:
Private Sub L1_Click
L1.Caption = "爱拼才会赢!"
End Sub
2.4.2 文本框
文本框TextBox是一个文本编辑区域,用户可以在该区域输入、编辑、修改、输出文本内容,即用户可以创建一个文本编辑器。
1. 文本框的属性
文本框的常见属性如表2-4所示。
表2-4 文本框的常见属性
属 性
类 型
说 明
Name
字符型
文本框的名称
Text
字符型
显示文本框上的文字,为字符型
MaxLength
整型
允许输入的最多字符个数,默认为0,表示长度不限
MultiLine
逻辑型
设置文本框中是否可以输入显示多行文本。True:多行显示,即当输入的文本超出文本框边界时,将自动换行;False:单行显示
PasswordChar
字符型
向文本框中输入密码时,所有字符均显示为该属性设定的字符如*
Lock
逻辑型
决定控件是否可以编辑。True:不能修改,只能对文字做选取和滚动显示;False:允许修改
ScrollBars
整型
为文本框添加滚动条,仅当MultiLine属性为真时起作用。
0:无滚动条;1:水平滚动条;2:垂直滚动条;3:水平和垂直滚动条
SelStart
整型
选定正文的开始位置。第一个字符的位置为0,若没有选择文本,则用于返回或设置文本的插入点位置
SelLength
整型
选定的正文长度
SelText
字符型
选定的正文内容
提示: 当MultiLine设为True时,ScrollBars属性才有效。
【例2-5】建立两个文本框,Text1的Text属性值为"少壮不努力,老大徒伤悲",有垂直滚动条;Text2的Text属性值为空,有水平和垂直滚动条。要求:运行程序,单击该窗体时,将Text1的前5个字符复制到Text2中,如图2-5所示。
图2-5 文本复制
事件过程如下:
Private Sub Form_Load
Text1.SelStart = 0
Text1.SelLength = 5
Text2.Text = Text1.SelText
End Sub
提示: 请思考一下,若要将Text1中任意选定的文字复制到Text2中,则对上面的事件过程如何修改?
2. 文本框的事件
1 Change事件
当文本框的Text属性值发生改变时,就会触发该事件。
2 KeyPress事件
当用户按下并且释放键盘上一个键时,就会触发焦点所在的文本框的KeyPress事件,该事件会返回所按键的ASCII码值,所以该事件可以用来判别用户给文本框输入的是字母、数字还是其他符号。
3 GotFocus事件
当一个对象获得焦点时,触发该事件。
4 LostFocus事件
当一个对象失去焦点时触发该事件。当按Tab键或用鼠标单击另一个对象非焦点所在对象时,都会使焦点所在对象失去焦点。GotFocus事件与LostFocus事件正好相反。
3. 文本框的方法
文本框经常使用的方法是SetFocus,该方法的作用是将焦点置于某个文本框中,其语法格式如下:
[对象名].SetFocus
【例2-6】设计一个简易的计算器,实现任意两数相加。界面如图2-6所示。
图2-6 加法器界面的设计
程序代码:
Private Sub Text1_LostFocus ''按Tab键,激发该事件
If Not IsNumericText1 Then
''IsNumeric函数判断Text1.text的内容是否为数字
Text1 = "" ''有非数字字符,清除输入Text1中的内容
Text1.SetFocus
''焦点重新回到Text1,继续输入
End If
End Sub
Private Sub Text2_KeyPressKeyAscii As Integer
If KeyAscii = 13 Then ''表示按Enter键结束输入,但焦点没有离开
If Not IsNumericText2 Then
''IsNumeric函数判断Text2.text的内容是否为数字
Text2 = "" ''重新输入
End If
End If
End Sub
Private Sub Text3_GotFocus
Text3.Text = ValText1.Text ValText2.Text
End Sub
程序运行后,读者会发现,当输入非法数据时,焦点永远离不开Text1,直到输入合法数据为止。
说明: 将文本框3锁定时,需要将Lock属性设置为True,val函数是将字符串转换为数值,这在后续章节中会详细介绍。
【例2-7】在窗体中创建两个文本框Text1和Text2,在Text1中输入内容时,Text2同步以"*"显示相同内容,单击窗体时,清除两个文本框的内容。
解析:本例要求在Text1中输入内容时,Text2同步显示内容,采用文本框的Change事件。相关控件的属性设置如表2-5所示。
表2-5 属性设置
对 象
属 性
属 性 值
Form1
Caption
文本框内容同步
Text2
PassWordChar
*
程序代码如下:
Private Sub Form_Click
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub Text1_Change
Text2.Text = Text1.Text
End Sub
2.4.3 命令按钮
命令按钮是用来接收用户命令的,用户可以通过单击命令按钮执行一些操作。在Visual Basic 6.0中,命令按钮是最常用的控件之一。
1. 命令按钮的属性
命令按钮的常用属性如表2-6所示。
表2-6 命令按钮的常用属性
属 性
类 型
说 明
Name
字符型
命令按钮的名称
Caption
字符型
命令按钮上显示的文字,为字符型
Default
逻辑型
该属性为True时,若窗体中的按钮都不具有焦点,则按Enter键与单击该命令按钮的作用相同。在一个窗体中,只允许一个命令按钮的Default属性为True
ToolTipText
字符型
设置当鼠标在控件上暂停时显示的提示信息
Cancel
逻辑型
该属性若为True,按键盘的Esc键与单击该命令按钮的作用相同。在一个窗体中,只允许一个命令按钮的Cancel属性设为True
Style
整型
设置按钮是标准的还是图形的。0:标准的;1:图形的
Picture
整型
设定按钮上的图形。只有Style属性为1时,Picture属性才会起作用
2. 命令按钮的事件
命令按钮的常用事件为Click单击事件,命令按钮不支持双击事件。
【例2-8】在窗体上设置一个按钮和一个文本框,在文本框中显示单击命令按钮的次数。界面如图2-7所示。
图2-7 界面设计
程序代码:
Private Sub Command1_Click
Text1.Text = Text1.Text 1
End Sub
提示: Text1.Text属性的初始值为0。
2.4.4 焦点
在可视化程序设计中,焦点是个很重要的概念。TabIndex和TabStop属性、SetFocus 方法,以及GotFocus和LostFocus事件都是与焦点相关的。焦点是接收用户鼠标和键盘输入的一种能力。只有获得焦点的控件,才能接收用户由鼠标和键盘的输入。窗体和大多数控件一般都能获得焦点。不能接收焦点的控件有标签、框架、图像框、直线、形状控件、时钟控件和菜单等。不同的对象获得焦点的表现形式不太相同,如文本框获得焦点的表现为光标在文本框内闪动;复选框获得焦点则在它的Caption值周围出现虚线框;对于窗体来说,只有当窗体上没有能聚焦的控件时,该窗体才能接收焦点。另外,焦点只能移到可见的窗体和控件上,所以,只有当对象的Enabled 和Visible 属性均为True时,它才能接收焦点。当对象得到焦点时,会触发GotFocus事件;而当对象失去焦点时,会触发LostFocus事件。窗体和大多数控件都支持以上两个事件。
对象获得焦点的方法有很多种,最常用的是通过单击操作来获得。若要通过代码设置来改变焦点,则需要调用对象的SetFocus方法。若对象上有快捷键,则可利用快捷键选择该对象。此外,TabIndex属性、TabStop属性的设置确定了窗体上对象的Tab键顺序,在程序运行时,用户可以通过按Tab键,让能够接收焦点的对象轮流获得焦点。
下面详细介绍TabIndex属性和TabStop属性。
1.TabIndex属性
控件对象在创建时,自动设置的TabIndex属性值已经决定了Tab键顺序,即默认为添加对象的次序。也可以通过属性窗口重新设定,初始值从0开始,不能接收焦点的控件中,标签和框架也有该属性。若要改变此顺序,只要重新设置该属性值即可。
2.TabStop属性
若要使Tab键操作时能跳过某对象,即不能用Tab键使该对象获得焦点,只要将该对象的TabStop属性改为False即可。
如图2-8所示,若窗体中对象的创建次序为图像框、文本框、命令按钮和复选框,则这些对象的TabIndex属性值分别为0、1、2、3。在程序运行时,利用Tab键能够使文本框、命令按钮和复选框轮流具有焦点。若将命令按钮的TabStop属性设为False,则焦点将在文本框和复选框之间来回切换。
2.5 创建Visual
Basic应用程序的基本步骤
创建Visual Basic应用程序的基本步骤如下。
1 新建工程。
2 设计用户界面。
3 设置控件属性。
4 编写事件代码。
5 保存应用程序。
6 运行应用程序。
7 生成可执行文件。
一个Visual Basic应用程序从设计到编程实现,一般可分为两个阶段,即策划阶段和程序设计阶段。策划阶段的工作包括设计用户界面、确定各个控件的名称及属性;程序设计阶段包括编写代码、保存并运行程序。
下面通过一个简单的示例,来说明在Visual Basic 6.0中建立应用程序的完整过程。
【例2-9】设计一个"登录界面"应用程序。界面如图2-9所示。
1. 新建工程
为了建立应用程序,首先应建立一个新的工程。创建新工程的步骤如下。
选择"文件""新建工程"菜单命令,弹出"新建工程"对话框,在若干图标选项中选择"标准EXE"图标,单击"确定"按钮,如图2-10所示。
图2-9 登录界面 图2-10 "新建工程"对话框
2. 设计用户界面
本例用到6个控件:两个标签、两个文本框、两个命令按钮。
1 建立窗体。
新建一个工程,系统会自动创建一个新窗体,其默认的名称Name为Form1,默认的窗体标题也是Form1。
2 调整窗体大小。
用鼠标拖动窗体周围的8个控制点,可以调整其大小,也可以通过Width和Height属性进行设置。
3 在窗体上添加控件。
单击工具箱的标签图标,当鼠标指针变为" "号后,在窗体上按住鼠标左键拖动鼠标,划出一个轮廓,大小合适以后,放开鼠标即可,其他控件的建立与对标签的操作类似,这里就不再赘述。
3. 设置控件属性
以下分别对窗体、标签、文本框和命令按钮进行相应的属性设置。
1 选中对象。
2 打开属性窗口,找到相应的属性,删除其原有属性,在属性值中添加新的内容。登录界面中各控件的属性设置具体如表2-7所示。
表2-7 登录界面的属性设置
控 件 名
Caption
Text
Passwordchar
Form1
登录界面
Label1
请输入您的用户名
Label2
请输入您的密码
Text1
清空
Text2
清空
*
Command1
登录
Command2
退出
4. 编写事件代码
在这个简单的程序中,我们只需要对"登录"和"退出"两个命令按钮的单击事件分别编写代码。
1 处理"登录"按钮的Click事件。
① 双击窗体上的"登录"按钮,进入代码窗口。
② 光标插入点会自动出现在该控件的事件过程中。
③ 输入程序代码。
④ 单击代码窗口的关闭按钮,返回窗体。
"登录"按钮的代码如下:
Private Sub Command1_Click
If Text2.Text = "123" Then
MsgBox "密码正确" ''弹出提示消息框
Else
MsgBox "密码不正确,请重新输入" ''弹出提示消息框
End If
End Sub
2 处理"退出"按钮的Click事件。
进入代码窗口的方法与对"登录"按钮的操作类似。"退出"按钮的代码如下:
Private Sub Command2_Click
End ''结束程序的运行
End Sub
5. 保存应用程序
代码编写完成后,在运行程序之前,应该先保存程序,防止意外情况造成程序丢失。
在Visual Basic中,应用程序都是以工程的形式保存在磁盘中的。
一个工程,通常包含了多个窗体,在保存时,我们需要同时保存窗体文件.frm和工程文件.vbp。窗体文件包括窗体及其控件的属性和其他信息。每一个窗体都有一个窗体文件。工程文件是指与该工程有关的所有文件对象的清单。
在本例中,需要保存一个窗体文件和一个工程文件,保存步骤如下。
1 选择"文件""保存工程"菜单命令,或单击工具栏上的"保存"按钮,会弹出"文件另存为"对话框。
2 选择指定的路径,在"文件名"文本框中输入窗体的名称默认名称为Form1,保存类型为窗体文件。单击"保存"按钮,进行窗体文件的保存,如图2-11所示。
3 在弹出的"工程另存为"对话框中,在"文件名"文本框中输入工程名默认的工程名为"工程1",保存类型为"工程文件"。单击"保存"按钮,即完成对工程的保存,如图2-12所示。
图2-11 保存窗体文件 图2-12 保存工程文件
提示: 保存文件对我们来说很重要,保存时,应该先保存窗体,再保存工程。
6. 运行应用程序
运行应用程序有3种方法。
1 单击工具栏上的"启动"按钮。
2 直接按键盘上的F5键。
3 选择"运行""启动"菜单命令。
本例程序的运行可以选择其中任何一种,然后调试程序,直到运行出正确的结果。
7. 生成可执行文件
生成可执行文件后,即使用户的电脑中没有安装Visual Basic环境,也能够直接在Windows下运行可执行文件,这给我们带来了很大的方便。生成可执行文件的步骤如下。
1 选择"文件""生成2-5.exek..."菜单命令,将会弹出"生成工程"对话框,如图2-13所示。
2 在该对话框中,用"保存在"下拉列表框指定可执行文件的保存路径,默认与工程文件在同一路径下;在"文件名"文本框中给出可执行文件的名字,默认与工程文件同名,扩展名是.exe;单击"确定"按钮,即可生成指定路径下的可执行文件。
图2-13 "生成工程"对话框
2.6 小型案例实训
1. 实训目的
掌握窗体、标签、文本框及命令按钮的使用。
2. 实训内容
编程实现如图2-14所示的应用程序界面。
图2-14 运行结果界面
3. 实训步骤
1 界面设计。建立3个标签,标签的标题分别为"长"、"宽"和"长方形面积",窗体的标题为"小型实训示例"。再建立3个文本框,把3个文本框的text属性清空。最后建立一个命令按钮,标题为"计算",控件的其他属性都为默认属性。
2 编写事件代码。程序代码如下:
Private Sub Command1_Click
Text3.Text = ValText1.Text * ValText2.Text
End Sub
3 运行和保存应用程序。
在Text1和Text2两个文本框中输入长方形的长和宽,单击"计算"命令按钮,就可以在Text3的文本框中显示计算的结果。最后保存应用程序即可。
本 章 小 结
在程序的界面设计中,需要创建窗体和控件对象。本章详细地介绍了窗体和基本控件的常用属性、方法和事件。通过对本章内容的学习,读者应该明确各控件的功能,能够在适当的情形下选用合适的控件,熟练地对窗体和基本控件对象进行属性设置和方法调用,能进行简单的事件过程编写。
界面设计是一项重要的内容,关系到应用程序的"门面",读者应不断学习,利用现有的工具,设计出美观实用的应用程序。
习 题
1. 选择题
1 要改变一个窗体的标题内容,需重新设置的窗体属性是 。
A. Name B.
Caption
C. Borderstyle D.
Enable
2 下列叙述中,正确的是 。
A. 只有窗体才是Visual Basic的对象
B. 只有控件才是Visual Basic的对象
C. 窗体和控件都不是Visual Basic的对象
D. 窗体和控件都是Visual Basic的对象
3 启动Visual Basic,新建的EXE工程中,不会在工具箱中出现的控件是 。
A. 命令按钮 B. 标签
C. ActiveX控件
D. 文本框
4 对于"打开便携式电脑"这一描述,其中的"电脑"、"便携式"、"打开"依次是下面的哪一项?
A. 对象、属性、方法 B.
属性、对象、方法
C. 属性、方法、对象 D.
对象、方法、属性
5 标签控件能够显示文本信息,文本内容对齐方式用 属性来设置。
A. Alignment B. Caption C. Visible
D. BorderStyle
6 在窗体上画一个命令按钮Command1,然后编写如下事件过程:
Private Sub Command1_click
Move 500, 500
End Sub
程序运行后,单击命令按钮,执行的操作为 。
A. 命令按钮移动到距离窗体左边界、上边界各500的位置
B. 窗体移动到距屏幕左边界、上边界各500的位置
C. 命令按钮向左、上方向各移动500
D. 窗体向左、上方向各移动500
7 下列说法错误的是 。
A. 方法是对象的一部分
B. 不同的对象具有相同的方法
C. 方法是一种特殊的过程和函数
D. 调用方法时,对象若省略,则默认为窗体
8 文本框没有 属性。
A. Enabled B. Visible C. BackColor
D. Caption
9 要使某控件在运行时不可显示,应对 属性进行设置。
A. Enabled B. Visible C. BackColor
D. Caption
10 当运行程序时,系统自动执行启动窗体的 事件过程。
A. Load B. Click C. Unload
D. MinButton
2. 填空题
1 工程文件的扩展名是________,窗体文件的扩展名是_________,标准模块文件的扩展名是_________。
2 可以通过__________菜单中的_________命令退出Visual Basic。
3 程序运行后,当单击窗体本身不是窗体上的控件时,将触发窗体的__________事件。
4 在文本框中,通过________属性能获得当前插入点所在的位置。
5 如果要将文本框作为密码框使用,应设置的属性为________。
3. 编程题
1 窗体名称为Form1,设计程序,运行后,用鼠标点击窗体,则将窗体隐藏起来。
2 在属性窗口中,将窗体Form1的背景色设置为蓝色,程序运行后,自动将窗体的标题改为"窗体"。
3 在窗体Form1上画一个名为L1的标签,通过属性窗口设置属性。
① 标签的标题为"测试标签"。
② 标签内的文字右对齐。
③ 标签具有边框。
④ 标签的字体为"黑体"、"四号字"。
4 在窗体Form1上画一个名为L1的标签,标签的标题为"学习VB",标签可根据内容自动调整大小;程序运行后,用鼠标单击标签,则将标签的字体设置为"黑体"、字体大小为20。
5 在窗体Form1上画一个名为cmd1的命令按钮,标题为"改变",程序运行后,单击命令按钮,则命令按钮的高度变为原来高度的2倍,宽度变为原来宽度的2倍。