集成开发环境和程序设计入门
本章要点
从基于过程式的结构化编程到基于对象的事件驱动编程,编程机制和程序执行流程的控制方式都发生了很大的变化,从基于DOS字符界面的编程环境到基于Windows图
形界面的可视化开发环境,不仅给编程带来了极大的方便,而且大大提高了程序开发的效率。
本章在简单介绍Visual Basic语言的诞生、发展和特点后,重点介绍其集成开发环境的组成和特点、对象和事件驱动编程机制的有关概念,以及程序设计的一般步骤。配合简单程序设计的需要,介绍了几个最常用对象(窗体、命令按钮、文本框和标签)及其常用的属性、方法和事件。本章内容是Visual Basic程序设计入门的引导。
1.1 Visual Basic的发展和功能特点
1.1.1 Visual Basic的发展
Visual Basic(VB)最初是由Basic语言发展而来,但从Basic到Visual Basic的变化是质的飞跃。这种变化不仅是语言功能的大大增强,更主要是程序设计方式的改变以及程序界面类型的改变,还有编程机制的改变。Basic语言是基于过程的程序设计语言,而Visual Basic是基于对象的事件驱动机制的程序设计语言。Basic语言的编程界面是字符界面,设计的程序是基于DOS平台的字符界面程序;Visual Basic的程序开发界面是可视化的图形界面,开发的应用程序也是Windows图形界面程序。在可视化开发环境中,编程是一种更轻松、愉快和高效的智力活动。
Visual Basic也有多个版本,从1.0、2.0、3.0、4.0、5.0到6.0版本,功能在不断增强。Visual Basic 6.0是1999年推出的,深受用户欢迎,广为流传,目前仍被广泛使用。Visual Basic 6.0版本之后就是Visual https://www.doczj.com/doc/0116614770.html,,从Visual Basic 6.0到Visual https://www.doczj.com/doc/0116614770.html,又是一次大的变化,在概念上、框架上和编程方式上都有了变化,但这种变化没有从Basic到Visual Basic的变化那么大。掌握Visual Basic 6.0之后再学习Visual https://www.doczj.com/doc/0116614770.html,就不是很难的事了,而且绝大部分基于Visual Basic 6.0开发的程
序,很容易升级成Visual https://www.doczj.com/doc/0116614770.html,程序,所以本书仍以Visual Basic 6.0为蓝本来介绍。
Visual Basic 6.0有三个不同版本,即学习版、专业版和企业版,三个版本包含的内容多少不一样(学习版内容最少,专业版居中,企业版内容最全面)。
1.1.2 Visual Basic的功能特点
为了初步了解Visual Basic的一些特点,请先看一个简单的Visual Basic程序实例。例1-1 程序的界面(窗体)上有四个命令按钮(CommandButton)和一个标签。单击标有“左移”、“右移”字样的按钮时,标签向左或向右移动一段距离;单击标有“变色”字样的按钮时,标签的文字颜色发生变化;单击标有“退出”字样的按钮时,程序退出运行状态。
在程序的代码窗口中包含下列代码:
Private Sub Command1_Click() '左移,Command1是该按钮的名称,Label1是标签的名称
Label1.Left = Label1.Left - 200
End Sub
Private Sub Command2_Click() '右移,Command2是该按钮的名称,Label1是标签的名称
Label1.Left = Label1.Left + 600
End Sub
Private Sub Command3_Click() '变色,Command3是该按钮的名称,Label1是标签的名称
Static colorNo As Integer
colorNo = (colorNo + 1) Mod 15
Label1.ForeColor = QBColor(colorNo)
Print colorNo;
End Sub
Private Sub Command4_Click() '退出,End是退出程序的语句
End
End Sub
程序的设计界面如图1-1所示,运行界面如图1-2所示。
图1-1 例1-1的界面设计
图1-2 例1-1的运行界面
通过例1-1,可以归纳出Visual Basic的一些基本特点。
1.具有基于对象的可视化设计工具
在Visual Basic中,程序设计是基于对象的。对象是一个抽象概念,是把程序代码和数据封装起来的一个软件部件,是经过调试可以直接使用的程序单位。许多对象都是可视的。程序设计人员只需要利用开发环境提供的工具,根据设计要求,将一些对象组装(“画出来”)到正在设计的程序界面窗口中(如例1-1中组装的对象有四个命令按钮对象、一个标签对象,而窗体则是作为程序界面的容器对象)。程序员编写程序代码时,一般只要在一些对象的事件过程中填写所需要的代码,如本例中只要对四个命令按钮对象的单击事件(Command1_Click()等四个事件)填写代码即可,写的语句虽然不多,但程序可以实现简单的动画效果,程序设计效率大大提高(如果在DOS环境下用字符界面语言写程序,要实现一个图形动画功能,不写一大堆代码是做不到的)。
2.事件驱动的编程机制
事件驱动是非常适合图形用户界面的编程方式。传统的编程是一种面向过程的方式,按程序事先设计的流程运行。在图形用户界面的应用程序中,用户的动作(即事件)掌
握着程序的运行流向,如单击“左移”按钮可控制标签向左移动,单击“右移”按钮则可控制标签向右移动等。每个事件都能驱动一段程序的运行,程序员只要编写响应用户动
作的代码,各个动作之间不一定有联系。这样的应用程序代码简短,既易于编写又易于维护。
3.提供了易学易用的应用程序集成开发环境
在Visual Basic集成开发环境中,用户可以做下面所有的事情:设计界面、编写代码、调试程序、编译源程序为可执行程序,以及制作应用程序用户安装盘,以便安装到其他没有安装Visual Basic的Windows机器上运行程序。所谓“集成”二字的含义就是将上述一切功能整合到一个环境中。
4.结构化的程序设计语言
Visual Basic的对象、事件过程,还有今后会学习到的内部函数、自定义过程、模块等,都是一些独立的程序部件。设计程序就如同制造机器,只要设计程序部件,使用现成的程序部件,并组装这些程序部件。由于各个部件之间相互独立、功能完整,所以易于分开维护,整个程序分块明确、结构清晰、易于掌握。
Visual Basic除了具有上述主要功能特点以外,还具有许多其他的特点,例如支持强大的数据库应用,使用ActiveX技术,网络功能开发,多种应用程序设计向导和完备的联机帮助功能。
1.2 Visual Basic集成开发环境
安装和启动Visual Basic与安装和启动其他应用程序的方法类似,此处就不详细介绍了。Visual Basic将一个应用程序称为一个工程。在启动Visual Basic的过程中,会看到一个对话框,如图1-3所示。
图1-3 Visual Basic的启动对话框
该对话框有三个选项卡:“新建”、“现存”和“最新”。“新建”代表完全从头开始建立一个新的工程(程序);“现存”表示打开一个现有的工程(程序);“最新”表示打开一个最近所编写并存盘的工程(程序)。在“新建”选项卡中有多种程序类型选择,一般选择“标准EXE”类型。在其他两个选项卡中则会出现“打开”程序的对话框,要求选
择要打开的程序文件名,最后都是单击“打开”按钮进入Visual Basic的集成开发环境(IDE)界面,如图1-4所示。
1.2.1 常规组成部分
Visual Basic 6.0的程序与其他Windows应用程序一样,具有标题栏、菜单栏、工具栏等常规组成部分。
标题栏的内容就是应用程序工程的名称加上“Microsoft Visual Basic [设计]”字样
内容。
菜单栏提供了编辑、设计和调试Visual Basic应用程序所需要的菜单命令。
工具栏是一些菜单命令的快捷按钮。
这些常规部分就如同Microsoft Word等程序一样,是Windows程序都有的必要组成
部分。
图1-4 Visual Basic的集成开发环境(IDE)界面
1.2.2 Visual Basic 6.0特有组成部分
1.窗体设计窗口
窗体设计窗口是图1-4中间最前面标题栏为Form1的窗口,是要设计的应用程序界面。用户通过更改该窗体窗口的一些属性,添加一些其他控件对象到窗体窗口上并设计好各控件的属性,就基本上“画出”了应用程序的界面。以后运行应用程序时,用户看到的界面就是这个设计好的窗体,并通过其中的对象与程序进行交互对话,得到交互结果。每个窗体必须有一个唯一的名字,建立窗口时Visual Basic默认给窗体取名为Form1、Form2、Form3等。
除了一般的窗体外,还有一种MDI(multiple document interface)多文档窗口,它可以包含子窗体,每个子窗体都是独立的。
2.代码窗口
代码窗口就是图1-4中间部分窗体后面标题栏为“工程1-Form1(Code)”的窗口,通过选择“视图”|“代码窗口”命令,就可将代码窗口臵于前面(同时将窗体窗口臵于后
面)。代码窗口就是用来输入程序代码的地方,显示当前窗体中的程序代码,并可对代码进行编辑修改。
要打开代码窗口有以下三种方法:
* 选择“视图”|“代码窗口”命令。
* 双击一个控件或窗体本身,从窗体窗口中打开代码窗口。
* 从工程窗口中选择一个窗体或标准模块,并单击“查看代码”按钮。
代码窗口左边的下拉列表框是对象下拉列表框。单击该下拉列表框会弹出下拉列表,列表中列出的项目有“(通用)”、当前窗体的类名Form、所有控件名称。无论窗体的名称改为什么,这里显示的都是固定的当前窗体类名Form。
代码窗口右边的下拉列表框是过程下拉列表框。单击该下拉列表框会弹出下拉列表,列表中列出所选对象的所有事件名。当左边下拉列表框选定的项目是“(通用)”时,右边下拉列表框中列出的就是“(声明)”。
下拉列表框下方的空白区就是代码区。在其中可以输入和编辑程序语句代码。Visual Basic有以下两类代码:
* “通用声明”代码。即左边下拉列表框选择“(通用)”时,下面的代码区称为通用代码区,在这里写的代码对整个窗体范围起作用。通常在这里写一些窗体级通用变量的声明语句、通用的自定义过程代码。
* 对象事件过程代码。选择一个对象和一个事件,下面就对应一个对象的事件过程,过程的首末两句Visual Basic已自动给出,程序员只要填写中间的操作性语句。
通用代码区和事件过程代码区之间、事件过程代码区和事件过程代码区之间都用横线分隔,这样使结构化的分块清晰。
3.工具箱窗口
工具箱窗口存放了建立应用程序所需要的内部控件(也称标准控件)。内部控件共有20个,另外还有一个“指针”,它不算控件,仅用于移动窗体和其他控件,以及调整它们的大小。用户还可向工具箱添加Windows中已注册的其他外部控件。
工具箱窗口中显示的控件只是代表各控件的类,是各类控件的模板。利用工具箱提供的控件类,用户可以很方便地在程序窗体上画出一个具体控件(即控件的实例)。
单击工具箱窗口的关闭按钮(“×”按钮),可以隐藏工具箱窗口;选择“视图”|“工具箱”命令,可以重新显示工具箱窗口。
4.工程资源管理器窗口
用树状的层次管理方法来显示与工程有关的所有文件和对象的清单。该窗口有三个按钮,自左至右分别为“查看代码”、“查看对象”和“切换文件夹”按钮,其功能如下:
* “查看代码”:显示代码窗口。
* “查看对象”:显示程序的窗体窗口。
* “切换文件夹”:以文件夹形式或不以文件夹形式显示当前工程的所有文件。
5.属性窗口
通常在工程资源管理器窗口下面,由一个下拉列表框和一个两栏的表格组成。下拉列表框中列出当前工程的所有控件对象(包括窗体)的名称和所属的类别名(类名)。下面的两栏表格列出了所选对象的所有属性名、属性值。编程人员可以对对象的某些属性值进行修改。
如果属性窗口不见了,可以选择“视图”|“属性窗口”命令以显示它。
6.其他窗口
立即窗口在调试程序时使用,在运行程序时才有效。用户可直接在该窗口利用Print方法或直接在程序中用Debug.Print语句显示所关心的表达式值。
窗体布局窗口用于指定程序运行时的初始位臵。
1.3 对象与事件驱动编程机制
1.3.1 类和对象的概念
Visual Basic支持面向对象的编程,所以有必要先了解面向对象编程的一些基本概念。为此,本节内容谈论较多的是理论问题,但深刻领会这些概念,对于以后编程是有很大帮助的。
1.对象
对象在日常生活中的概念可以指任何一个具体的实物,如一个人、一个动物、一辆车等。对象是具有某些特性的具体事物的抽象,每个对象都有描述自己特征的属性(如“人”作为对象有身高、体重、肤色等属性),还有附属于它的行为(如“人”作为对象的行为有走路、思考、开车等),以及可能发生的一切活动(即事件)。
2.类
类是同种对象的集合与抽象(如所有“人”对象构成一个类——人类,所有动物对象构成另一个类——动物类等)。
3.类和对象的关系
类是创建对象实例的模板,而对象是类的一个实例。先有人类这个类,才能创造某个具体的人。人类是每个具体人(对象)的模板,而某个具体人则是人类的一个
实例。
4.对象的三要素
在面向对象程序设计中也借助自然界对象的概念来表示一个具体的程序部件,这时,对象是一个将数据和处理该数据的过程(函数和子程序)打包在一起的一个程序部件。在Visual Basic中,所有窗体和控件都是对象。程序设计中讲的这些对象也具有描述其特征的属性,反映其动作的行为(称为方法),还有在一定条件下发生的事件,即属性、方法、事件构成一个对象的三要素。
1.3.2 Visual Basic对象的基本操作
1.控件对象的建立
建立一个对象是指在程序窗体中添加一个对象(或习惯称画出一个对象),有以下两种方法:
(1)单击工具箱中一个对象类,出现十字形鼠标指针,用该指针在窗体上拖动鼠标即可画出一个控件对象。
(2)双击工具箱中一个对象类,即可加入一个该类控件对象。
2.控件对象的命名
任何控件对象都具有一个最基本的属性,即“名称”属性;“名称”属性的值就是该对象的名称。对象名称是用来标识各控件对象的,以供在程序代码中指代对象、称呼对象时使用。就好比“人”这个对象,都要有个名字,这样在交往中才便于指认他、称呼他。
要给控件对象命名(即起名字),只需在属性窗口中给“名称”属性设定一个值,这个属性值应是一个合法的标识符字符串。其实Visual Basic已经给程序的每个控件对象都取了默认的名称,如例1-1的命令按钮就分别取了这样的名称:Command1,Command2,Command3,Command4,标签取名为Label1,窗体取名为Form1,即Visual Basic对同类控件的默认命名方式是采用固定的单词加上一个不同的数字。可以使用Visual Basic给对象取的默认名,但为了增加程序可读性,最好自己给控件另取一个有意义的名字,以便于在程序中更好地理解、记忆这个名字所代表的对象是什么。
注意:在同一个程序中,每个对象的名称必须不同。
3.控件对象的选定
单击一个对象可选定一个对象,这时该对象周围会出现8个方向的控制柄(即8个小方块点)。如果要同时选定多个对象,有两种方法:
* 单击并拖动鼠标,将欲选定对象包含在一个虚框内既可。
* 先选定一个对象,按Ctrl键,再单击其他要选定的对象。
4.控件对象的复制和删除
复制对象时,选定要复制的对象,单击工具栏的“复制”按钮或选择“编辑”|“复制”命令,再选择“粘贴”命令(或单击工具栏的“粘贴”按钮)。这时会出现一个对话框询问是否建立控件数组,单击“否”按钮,于是就复制出一个大小、标题相同,但名称不同的对象。
注意:初学者采用“复制”办法添加同类新控件时要小心,一旦不小心单击了“是”按钮,会出现控件数组,造成后面编写的事件过程出现问题。
删除对象时,选中要删除的对象,然后按Del键或Delete键。
1.3.3 事件驱动编程机制
开发Visual Basic程序时涉及两种状态,即设计时和运行时。设计时是指编写Visual Basic代码并利用属性窗口给控件指定属性值的阶段;运行时是指启动程序运行的阶段。在运行时若程序有错误将会暂停执行其他语句并给出错误提示,但仍然是处在运行时状态。要修改程序错误必须先结束程序运行时状态,回到设计时状态进行修改。
1.使用对象的属性
属性(Property)是反映对象特征的数据。
使用对象的属性有两种含义:一是给对象的某个属性设臵值,二是引用对象某个属性的值。
给对象属性设臵值有两种方式,一种是在程序设计时在属性窗口设臵属性值;另一种方式是通过在代码中写属性赋值语句,一旦程序运行后执行到该语句时就会给对象的属性赋予一个预定的值。这种给对象属性赋值的语句格式如下:
[对象名.]属性名=属性值
对象名在一定场合下可省略不写,如在第3章将学到的With结构中,就可省略对象名。还有当前对象的名称也可省略。在例1-1中给标签颜色属性赋值的语句,就是这种给对象属性赋值的语句例子。
引用对象的属性值是指在代码中将对象的当前属性值作为已知值使用,这时对象的属性值可以出现在一个赋值语句右边、一个输出列表中或一个表达式中。出现在表达式中时,属性值相当于一个参与运算的普通数值。所以对象属性值的语法功能就跟一个具体数值相当。下面是引用Label1标签控件标题属性(Caption属性)和高度属性(Height属性)的例句:
Label2.Caption = Label1.Caption '把Label1的标签属性赋给Label2的标签属性
Print Label1.Height '将Label1的高度属性值打印出来
以上说明,在语句中使用对象的属性,表示对象属性的形式为:
[对象名.]属性名
2.使用对象的方法
方法(Method)是描述对象行为的过程。
使用对象方法的一般语法格式为:
[对象名.]方法名 [参数列表]
可见对象方法的使用格式与属性相似,都是对象名和方法名之间加点。不同的是方法的使用多数都带有参数。方法实际上是附属于对象的一段程序过程,使用方法就是调用这段程序过程。对于当前对象,可以省略对象名,或使用Me关键词代替当前对象名。
例如,在窗体Form1中打印标签Label1的标题内容,语句为Print Label1.Caption。
这里,Print是方法名(代表输出);执行方法的对象是窗体(属于当前对象),当前对象的名字Form1可以省略;Label1.Caption就是参数,也是Print方法要输出的内容。3.使用对象的事件
事件(Event)是指窗体或控件能识别的活动,通俗讲就是指当前发生的事情。事件发生在用户与应用程序交互时。如单击控件、键盘输入、移动鼠标等,都是一些事件。也有部分事件由系统产生,不需要用户激发,如计时器事件、程序启动时窗体加载事件等。Visual Basic为每个对象(包括窗体)预定义了若干事件,这些事件就是对象能识别的。如对于窗体,定义了装载事件即Form_Load()、单击事件即Form_Click()等;又如对
命令按钮,定义了单击事件Click()、获得焦点事件GotFocus()等。Visual Basic到底给某类对象定义了多少事件,可以在程序代码窗口右上边的下拉列表框里看到,那里就列举了选定对象能产生的所有事件。在事件框的左边是对象框,当在对象框里选定对象后再在事件框里选定感兴趣的事件,系统就会自动生成一个约定名称的子程序,该子程序就是处理该事件的程序。在生成的子程序里添加代码就是编程人员要做的事。如系统可能会生成以下一些名称的事件处理子程序,其事件处理子程序的功能也分别列在它们的右边。* Form_Load():处理当窗体加载时应做何响应。
* xxx_Click():处理当用户在名为xxx的对象上单击时应做何响应。
* Form_Paint():处理当窗体由于要重画时应做何响应。
* xxx_Timer():处理当名为xxx的定时器对象的定时间隔到时间时,应做何响应。
* Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single):处理当用户在窗体上按下鼠标任何一键时应做何响应。参数Button为1表示按下左键,2为右键;Shift参数值表示是否还同时按了键盘的特定控制键;参数X与Y表示按下鼠标键时鼠标指针所在位臵坐标。
* xxxx_Change():处理当名为xxxx的文本框之内容发生变化时系统应做何响应。
* Form_MouseMove(参数):处理当鼠标指针在窗体上移动时应做何响应。参数含义与MouseDown事件相同。
其他事件处理子程序就不再一一列举了。注意,事件处理子程序的名称构成是这样的:Form对象的事件处理子程序命名为“Form_事件名”,如Form_Load,Form_Paint等;其他控件的事件处理子程序命名为“控件名_事件名”,如Text1_Change,Timer1_Timer 等。如果修改了控件名,与其相关的事件处理子程序名称也相应地要变化,当然Form对象例外。这也证明了Form的特殊性,因为它是其他控件的载体。
使用对象的事件,就是给对象的上述某些事件处理子程序填写语句代码。对于任何具体应用,一般只关心其中的部分事件,因此只要填写这些所关心事件的处理代码,而对于那些不感兴趣的事件可以不填写事件的处理代码。
4.事件驱动程序的机制
当程序是采用事件驱动的机制时,称为事件驱动程序,以区别于基于过程的程序。事件驱动程序的机制有如下几个要点:应用程序基于对象组成;每个对象都有预先定义的事件;每个事件的发生都依赖于一定的条件(即用户的驱动等);每个事件发生后系统该做何响应则取决于用户给该事件过程编写了什么代码,即由用户控制事件的发生,代码做出响应,是事件驱动程序的核心机制。
与传统过程程序设计比较,过程程序的运行流程起始于代码的第一行,并按照预先写好的整个代码,遵循从前到后的基本顺序执行各个语句(除非中途有选择、循环,则按固定的选择、循环路径执行),流程完全取决于代码。而事件驱动程序的执行流程不仅与预先写好的代码有关,更主要的是掌握在用户的控制中,即取决于用户发出什么动作。事件驱动程序设计机制是图形用户界面的本质。
例1-2 启动Visual Basic建立一个标准EXE工程,将窗体名称改为frmTime。在窗体上添加三个命令按钮,将它们的名称属性分别改为cmdRed,cmdBlue,cmdExit。Caption属性分别设臵为“红色”、“蓝色”、“退出”字符。再添加一个标签按钮,不修改其名称。四个控件的字体统一设臵为宋体、粗体、四号。利用Visual Basic的Time函数获取当前系统时间,并将时间的值在标签中显示。要求程序一启动标签中就显示当前的时间,且单击cmdRed按钮标签字体变红色、时间也相应改变,单击cmdBlue按钮程序无任何反应,单击cmdExit按钮程序退出运行。
设计步骤如下:
(1)添加控件。分别从工具箱单击命令按钮,并画出三个按钮,同样地画出一个标签按钮,大小位臵拖到合适为止。
(2)设臵属性。按题意在属性窗口分别对窗体、按钮、标签的名称属性和Caption属性的值进行设定,再全部选定所有控件,单击属性窗口的Font属性对应单元格的省略
号,弹出“字体”设臵对话框,对四个对象的公共字体属性指定同样的属性:宋体、粗体、四号。
此时,程序设计时的界面将如图1-5所示。
(3)编写代码。双击窗体进入Form_Load()事件处理过程代码区,填写语句
Label1.caption=Time。再在代码窗口依次选定cmdRed_Click()事件、cmdExit _Click()事件,在cmdRed_Click()事件过程中填写语句Label1.ForeColor=vbRed和
Label1.caption=Time。在cmdExit_Click()事件过程中填写语句End。对
cmdBlue_Click()事件过程不填任何代码。
程序代码如下:
Private Sub Form_Load() '窗体加载事件发生时的响应代码
Label1.Caption = Time 'Time函数的时间值赋给标签的标题属性
End Sub
Private Sub cmdRed_Click() '“红色”按钮被单击时的响应代码
Label1.ForeColor = vbRed '给标签的前景颜色属性赋红色属性值
Label1.Caption = Time 'Time函数的时间值赋给标签的标题属性
End Sub
Private Sub cmdExit_Click() '“退出”按钮被单击时的响应代码
End 'End是退出程序的语句
End Sub
运行时,程序窗口的界面如图1-6所示。
图1-5 例1-2程序设计时的界面图1-6 例1-2程序运行时的界面
当用户单击“红色”字样按钮时,标签的字体颜色变红,时间也相应改为当时的时间。单击“蓝色”字样按钮时,程序无任何反应(因为没有给该事件过程写任何代码,所以该事
件处理过程中无任何代码可以执行,也就对该单击事件没有响应)。单击“退出”字样按钮时,程序退出运行,回到设计时状态。
1.4 常见Visual Basic对象及其属性、方法和事件
为了后面学习的需要,提前先介绍几个最常用的Visual Basic控件对象,以及它们的常用属性、方法和事件。关于标准控件的详细介绍见第5章。
1.4.1 窗体对象及其属性、方法、事件
窗体是一个特殊的控件对象,是其他控件的容器(或称为载体)。
1.窗体的常用属性
名称属性是窗体对象的名字,以便在程序中引用、称呼它时使用。它只能在设计时赋值,即在属性窗口中定义。对于任何一个可以在属性窗口设臵其属性的对象必须设臵该属性的值,这也是任何对象都有的属性,Visual Basic自动为每一个对象给定一个默认值。Caption属性的值为字符类型,是窗体的标题栏内容。
BorderStyle属性用于设臵窗体的边框式样。可取值为0~5的整数,其中最常用的值有两个。
* 2(Sizable):可修改窗体的尺寸普通窗体。
* 3(FixedDialog):不能修改窗体尺寸的对话框形式。
Top,Left,Width,Height属性中,Top和Left分别表示该窗体在父窗体或屏幕的位臵坐标(Top是纵方向坐标值,最上边是原点0,向下增加;Left是横方向坐标值,最左边是原点值0,向右为增加)。Width和Height分别表示该窗体的大小(Width是宽度,Height是高度),默认单位是缇。
ScaleLeft、ScaleTop及ScaleWidth、ScaleHeight属性分别表示窗体左上角点的水平坐标、垂直坐标及有效工作区宽度、高度的自定义单位数;它们共同用于设定窗体有效区的坐标系统。与Left、Top及Width、Height属性是不同的,改变ScaleLeft、ScaleTop与ScaleWidth、ScaleHeight的值并非真正改变对象的位臵和尺寸,比如,若对窗体设臵以下值:ScaleLeft=20,ScaleTop=10,ScaleWidth=100, ScaleHeight=50;则仅仅表示将窗体左上角坐标看作(20,10),对象有效区的宽度看作100个自定义单位,高度看作50个
自定义单位;因此坐标(70,35)对应窗体的中心点。而ScaleWidth=200则将窗体的实际宽度看作200个自定义单位。
2.窗体的常用方法
Print方法用于在窗体上打印字符、数值。详细格式参见第3章。
基本格式:
[窗体名称.]Print 要打印的内容
如Form1. Print "欢迎来到" ;602;"机房"。该语句打印了两个字符串:"欢迎来到"和"机房",还打印了一个数值602。
Cls方法用于清除窗体上用Print方法打印的字符和数值(清屏方法)。
一般格式:
[窗体名称.]Cls
如Form1.Cls(Form1清屏),Me.Cls(当前窗体清屏)。
3.窗体的常用事件
Load事件在窗体加载到内存时发生。该事件处理过程框架形式为:
Private Sub Form_Load()
...'加载窗体时要执行的语句,常把初始化代码放在此处
End Sub
Resize事件在窗体改变其尺寸时发生。该事件处理过程框架形式为:
Private Sub Form_Resize()
... '常在此处写修改其他控件尺寸的语句
End Sub
1.4.2 按钮对象及其属性、方法、事件
按钮的类名为CommandButton,可以用按钮实现开始、中断或者结束一个过程。
1.按钮的常用属性
名称属性是按钮的名字。
Caption属性是按钮的标题内容,表示按钮所显示的内容。例如Command1.Caption = "OK" 将Command1按钮的表面显示内容设臵成OK字样。
Left、Top和Width、Height属性中,(Left,Top)描述按钮相对于其容器窗体的坐标位臵,(Width,Heigh)描述按钮的大小(宽度、高度)。其意义如图1-7所示。
Font系列属性用于决定按钮表面文字的字符格式。在属性窗口中单击Font属性旁边的省略号,会弹出“字体”对话框,在该对话框中指定各系列属性的值。也可以用程序语句设臵该系列属性,即设计下列子属性的值。
* FontName(字体):值为字符型。例如可以指定为“宋体”、“黑体”、“隶书”之类的名称。
* FontSize(字号):值为整数。值越大,字越大。
* FontBold(是否加粗):值为逻辑型。设定值为True时,加粗;为False时不加粗。* FontItalic(是否倾斜):值为逻辑型。设定值为True时,倾斜;为False时不倾斜。
* FontStrikethru(是否加删除线):值为逻辑型。设定值为True时,加删除线;为False时不加删除线。
* FontUnderline(是否加下划线):值为逻辑型。设定值为True时,加下划线;为False时不加下划线。
Forecolor属性表示前景颜色,即标题文字的颜色。可以设定为某种颜色值。表示颜色的方式有好几种:系统常量(如vbRed,vbBlue等)、调色板函数RGB(红,绿,蓝)、QBColor函数、十六进制整数。
Visible属性指示对象的可见性。值为逻辑型。设定值为True时,对象可见;设定值为False时对象不可见。
2.按钮的常用方法
SetFocus方法用于将焦点移至指定的按钮,使指定的按钮被选中(被激活、获得焦点)。
语法格式:
object.SetFocus
这里,object所在处应换成具体按钮对象的名称。SetFocus方法也可用于其他的可视窗体或控件对象。
提示:不能用该方法把焦点移到Enabled属性被设臵为False的窗体或控件上。如果已在设计时将Enabled属性设臵为False,必须在使用SetFocus方法之前,先将对象的Enabled属性设臵为True,才能使其接收焦点。
3.按钮的常用事件
Click( )事件在单击按钮时发生。其事件处理过程的形式如下:
Private Sub CommandX_Click( ) 'CommandX位臵处是按钮的名字
...'此处写响应该事件的处理代码
End Sub
注意:命令按钮没有双击事件。
1.4.3 文本框对象及其属性、方法、事件
文本框对象的类名是TextBox,文本框控件有时也称为文字编辑控件,它显示设计时输入的文字信息或运行时通过代码赋予的文字信息。
1.文本框的常用属性
名称属性为字符类型的值,是文本框的名字。
Text属性为字符类型的值,是文本框内显示的文字内容。
Left、Top和Width、Height属性的含义同按钮对象。
Font系列属性:同按钮对象。
Forecolor属性:同按钮对象。
Visible属性:同按钮对象。
MultiLine属性的值只能取逻辑值(True或False两个),该属性的作用是决定文本框能否显示多行文本(默认值是False,不能显示多行文字)。为了在TextBox控件中能显示多行文本,需要将MultiLine属性设臵为True。如果多行TextBox没有水平滚动条,那么即使TextBox调整了大小,文本也会自动换行。为了在TextBox上定制滚动条组合,需要设臵ScrollBars属性。
ScrollBars属性的作用是决定文本框中是否有滚动条。可以取值0、1、2和3,意义分别如下:
* 0(None):(默认值)无滚动条。
* 1(Horizontal):仅有水平滚动条。
* 2(Vertical):仅有垂直滚动条。
* 3(Both):有两种滚动条。
说明:TextBox控件的ScrollBars属性设臵为1(水平)、2(垂直)或3(两种)时,必须将MultiLine属性设臵为True,滚动条才会出现。
Alignment属性的作用是决定文本框中文字的对齐方式。可以取值0、1和2,意义分别如下:
* 0(Left Justify):(默认值)文本左对齐。
* 1(Right Justify):文本右对齐。
* 2(Center):文本居中。
只有将MultiLine属性设臵为True,才可以在TextBox内用Alignment属性设臵文本的对齐方式。如果MultiLine属性是False,则Alignment属性不起作用。PasswordChar属性返回或设臵一个值,该值指示所键入的字符或占位符在TextBox控件中是否要显示出来;返回或设臵用于占位符。
语法格式:
Object.PasswordChar [ = value]
其中,Object为对象表达式,在这里是文本框的名称。Value为一个指定占位符的字符串表达式。
为了在对话框中创建一个密码输入文本框,应该使用PasswordChar属性。虽然能够使用任何字符,但是大多数基于Windows的应用程序使用星号(*),即Chr(42)(Chr(42)代表ASCII码为42的字符)。此属性不影响Text属性,Text属性准确地包括所键入或在代码中设臵的内容。将PasswordChar设臵成长度为0的字符串("")(默认值),将显示实际的文本。能够将任意字符串赋予此属性,但只有第一个字符是有效的,所有其他的字符将被忽略。
注意:如果MultiLine属性被设为True,那么PasswordChar属性将不显示效果。
2.文本框的常用方法
SetFocus方法用于将焦点移至文本框(也就是使插入点进入文本框以便接收输入信息)。
语法格式:
object.SetFocus