1.4 窗体与控件
大部分Windows应用软件由一个主窗体和若干个子窗体组成。使用VB创建一个标准EXE类型的工程,第一步就是要进行用户界面的设计,这也是VB可视化编程的特点。窗体和控件都是对象,是VB可视化界面设计中的基本构造元素。窗体是控件的容器,控件只有添加到窗体上才可以使用。
在VB开发的软件项目中,一个窗体通常包含很多不同的控件,有时将这些控件组合起来实现某个功能。控件有多种类型,每种类型的控件又包含多个不同的控件。但是,这些控件都具有一些共同的特点,就是包含了3个基本要素:属性、事件和方法。窗体的用法和控件有很多类似之处,其很多属性、事件和方法与控件是相同的。下面以显示“Hello, Visual Basic 6.0”的程序为例,介绍窗体和控件的使用。
1.4.1 第一个VB程序
图1.11是“Hello, Visual Basic 6.0”的最终运行效果。
❑单击“显示”按钮,在界面上显示“Hello, Visual Basic 6.0”。
❑单击“隐藏”按钮,“Hello, Visual Basic 6.0”从界面上消失。
❑单击“Hello, Visual Basic 6.0”链接,“Hello, Visual Basic 6.0”移动到窗体左上角。
❑单击“Hello, Visual Basic 6.0”链接,“Hello, Visual Basic 6.0”移动到初始位置。
❑单击“退出”按钮,或者按下键盘Esc按键,程序结束运行。
首先,根据上一节的介绍,建立一个标准EXE类型的工程,工程名为prjHelloVB.vbp。然后,在窗体中添加一个Label控件和两个CommandBox控件。“Hello, Visual Basic 6.0”的具体设计将结合控件的属性、事件和方法展开。
1.4.2 控件的属性
控件的属性就是控件的性质,如控件的名称、外形、背景颜色、标题、尺寸、位置、风格等。在VB程序设计时,程序员可以通过属性窗口查看和设置控件的属性值。表1.1是控件公用属性的名称和说明。
图1.11 “Hello, Visual Basic 6.0”的最终运行效果图
表1.1 控件公用属性的名称和说明
“Hello, Visual Basic 6.0”的窗体和控件的部分属性设置见表1.2,其余属性为默认设置。
表1.2 “Hello, Visual Basic 6.0”的窗体和控件属性设置
“Hello, Visual Basic 6.0”的窗体大小是固定的,可以通过其BoderStyle属性实现。StartUpPosition属性是程序运行时窗体的启动位置,可以通过属性窗口下面的窗体布局窗口浏览窗体的启动位置。本例将窗体的启动位置设置到显示器的中间。
Label控件的AutoSize属性使得该控件的大小随其Caption值的多少和字体的大小而变化。将AutoSize属性设置为True的好处是:只要不超过窗体大小,无论Label控件要显示的文本有多大都可以正常显示。否则,当文本较多或字体较大时,只能部分显示。在不知道文本大小的情况下,AutoSize属性非常有用。
CommandBox控件的Cancel属性值默认为False。如果将其设置为True,CommandBox控件会响应键盘Esc按键的命令,执行Click事件。本例“退出”按钮的Cancel属性设置为True。顺便指出,欲使CommandBox控件响应键盘Enter按键的命令,可以设置该控件的Default属性值为True。
说明
窗体和控件的Height和Width属性,控件的Height、Width、Left和Top属性一般都不需要设置,用户只需用鼠标拖动即可设置窗体和控件的大小和位置。本书随后所述的部分将省略大小和位置属性的设置。
1.4.3 控件的事件
控件的事件就是控件对外部操作的响应。产生事件的方式有很多,常用的有鼠标事件、键盘事件、焦点事件等。每种类型的事件又有很多不同的形式。如鼠标事件中,有MouseDown事件、MouseMove事件和MouseUp事件。在进行VB程序设计时,事件的响应操作是需要程序员自己开发代码来实现的。表1.3是控件公用事件的名称和说明。
表1.3 控件公用事件的名称和说明
【实例1.1】“Hello, Visual Basic 6.0”的窗体和控件的事件代码如下所示。
01 '"退出"按钮的单击事件 02 Private Sub cmdExit_Click() 03 Unload Me 04 End Sub 05 06 '"隐藏"按钮的单击事件 07 Private Sub cmdHide_Click() 08 lblHelloVB.Visible = False 09 End Sub 10 11 '"显示"按钮的单击事件 12 Private Sub cmdShow_Click() 13 lblHelloVB.Visible = True 14 End Sub 15 16 '窗体加载事件 17 Private Sub Form_Load() 18 lblHelloVB.Visible = True 19 End Sub 20 21 'Label控件单击事件 22 Private Sub lblHelloVB_Click() 23 lblHelloVB.Move 0, 0 24 End Sub 25 26 'Label控件双击事件 27 Private Sub lblHelloVB_DblClick() 28 lblHelloVB.Move 1680, 2280 29 End Sub
【代码说明】代码第17~19行的Load事件是加载时产生的,但不是窗体启动时的第一个事件,窗体启动时的第一个事件是Initialize事件。本例中,单击“退出”按钮,或者按下键盘Esc键,这两种方式都可以产生第02~04行的“退出”按钮的Click事件。
说明
在代码编写窗口上方,选择对应对象。编写Click和Load等事件代码的时候,可以直接双击对应控件或窗体,就能进入VB自动生成的代码段,然后在代码段中编写即可。
1.4.4 控件的方法
控件的方法其实就是控件自身的动作,如控件的显示或隐藏。“Hello, Visual Basic 6.0”示例中Label控件单击事件和双击事件中都用到了该控件的Move方法。表1.4列出了控件公用方法的名称和说明。
图1.12 单击“Hello, Visual Basic 6.0”后的运行效果图
实例1.1中的Move方法有两个参数,分别是Label控件在窗体容器中所要移动到窗体上的指定位置。图1.12是单击“Hello,Visual Basic 6.0”后的运行效果图。
表1.4 控件公用方法的名称和说明