10.1建立多重窗体应用程序
10.1.1 建立多重窗体的语句和方法
多重窗体程序设计中,需要打开、关闭、隐藏或显示指定的窗体,这可以通过相应的语句和方法来实现。
1.Load语句
Load语句是把一个窗体装入内存。其语法格式为
Load 窗体名称
2.Unload语句
UnLoad语句清除内存中指定的窗体。其语法格式为
UnLoad 窗体名称
3.Show方法
Show方法是用来显示一个窗体,它兼有装入窗体和显示窗体两种功能。
其语法格式为
[窗体名称].Show [模式]
其中,“窗体名称”是指窗体的Name属性,缺省时指当前窗体;
“模式”是指用来确定窗体的状态,它可以取两种值,即为0和1
4.Hide方法
Hide方法是用来将窗体暂时隐藏起来,不在屏幕上显示出来,
其语法格式为
[窗体名称].Hide
10.1.2建立多重窗体应用示例
多重窗体程序中,经常要用到关键字Me,它代表的是程序代码所在的窗体。
例如,创建一个工程,由三个窗体组成,Form1用于输入用户名和口令,当输入正确时单击“确定”按钮显示Form2,当输入错误时则显示Form3,单击退出按钮结束程序;Form2中用文本框显示系统信息,单击“返回”按钮回到Form1;Form3为退出窗体,单击窗体则结束程序。
1.创建三个窗体及控件
选择“工程”菜单的“添加窗体”命令,添加两个窗体,窗体的名称按添加顺序分别为Form2和Form3,这样工程就由三个窗体组成。
(1) 窗体1:该窗体为主窗体,名称为Form1,是用来供用户确认和调用其他相应的窗体。该窗体上有三个标签,两个文本框,两个按钮,文本框Text1用于输入用户名称,文本框Text2用于输入口令。
(2) 窗体2:该窗体名称为Form2,该窗体上有一个标签,一个文本框,一个按钮,文本框采用多行显示,具有垂直滚动条,锁定文本框不能编辑。 (3) 窗体3:该窗体名称为Form3,为退出窗体,窗体上有一个图片框,一个标签。
2.编写事件代码
在窗体1的文本框输入用户名称和口令,单击“确定”按钮,当用户名称为“Admin”且用户口令为“123456”时显示窗体2,否则显示窗体3。单击“退出”按钮结束程序,其程序代码为:
Private Sub Command1_Click() '单击确定按钮
If Text1.Text = "Admin" And Text2.Text = "123456" Then
Form2.Show
Else
Form3.Show
End If
Form1.Hide
End Sub
Private Sub Command2_Click() '单击退出按钮
End
End Sub
在Form2中单击“返回”按钮,卸载Form2并显示Form1.其程序代码为:
Private Sub Command1_Click() '单击返回按钮
Form1.Show
Unload Me
End Sub
From3中显示图片,在Form3中单击窗体,卸载Form3,并退出程序,其程序代码为:
Private Sub Form_Click() '单击窗体
Unload Me
End
End Sub
10.1.3 多重窗体程序的执行和存取
1.设置启动窗体
设置启动窗体的步骤为:
① 选择“工程”菜单的“工程1属性”命令;
② 在弹出的对话框中选择“通用”选项卡;
③ 单击“启动对象”列表框的下拉箭头,从中选择“Form1”,如图10-5所示;
④ 单击“确定”按钮,完成启动窗体设置。
2.多重窗体程序的保存
(1)保存多重窗体程序
① 在工程资源管理器中选择要保存的窗体,然后执行“文件”菜单中的“另存为”目
录,打开“文件另存为”对话框。用该对话框把窗体保存到磁盘文件中。在工程管理器窗口中列出的每个窗体或标准模块,都必须分别存入磁盘。窗体文件的扩展名为.frm,标准模块文件的扩展名为.bas。
② 执行“文件”菜单中的“工程另存为”命令,打开“工程另存为”对话框,把整个工程以.vbp为扩展名存入磁盘。
(2)装入多重窗体程序
选择执行“文件”菜单中的“打开工程”命令,将显示“打开工程”对话框,或“现存”选项卡,在对话框中输入或选择工程文件(.vbp)名,然后单击“打开”按钮,即可把属于该工程的所有文件(包括.frm和.bas文件)装入内存。
(3)多窗体程序的编译
多窗体程序可以编译生成可执行文件(.exe),通过“文件”菜单中的“生成工程1.exe”命令生成可执行文件。
10.2 Visual Basic工程结构
Visual Basic程序中主要有3种模块,即窗体模块、标准模块和类模块。
10.2.1 标准模块与窗体模块
1. 标准模块
标准模块也常称为全局模块,由全局变量声明、模块层声明和通用过程等几部分组成。
l 其中全局变量声明放在标准模块的首部,全局变量声明总是在启动时执行。
l 模块层声明包括在标准模块中使用的变量和常量,
l 在标准模块中,全局变量用Public声明,模块层变量用Dim或Private声明。
l 标准模块通过“工程”菜单中的“添加模块”命令,来建立新模块或打开现存模块。
2. 窗体模块
窗体模块包括3部分内容,即声明部分、通用过程部分和事件过程部分。
l 在声明部分中,用Dim语句声明窗体模块所需要的变量,其工作域为整个窗体模块,包括该模块内的每个过程。
l 声明部分执行之后,Visual Basic在事件过程部分查找启动窗体中的Sub Form_Load过程,它是在把窗体装入内存时所发生的事件。如果存在这个过程,则自动执行它。
l 窗体模块中的通用过程可以被本模块或其他窗体模块中的事件过程调用。
l 在窗体模块中,可以调用标准模块中的过程,也可以调用其他窗体模块中的过程,被调用的过程必须用Public定义为公用过程。
l 标准模块中的过程可以直接调用(当过程名惟一时),而如果要调用其他窗体模块中的过程,则必须加上过程所在的窗体的名字,其格式为:窗体名称.过程名称 (参数表)
10.2.2 Sub Main过程
在一个含有多个窗体或多个工程的应用程序中,有时候需要在显示多个窗体之前对一些条件进行初始化,这就需要在启动程序时执行一个特定的过程。在Visual Basic中,这样的过程称为启动过程,并命名为Sub Main。
l Sub Main过程在标准模块窗口中建立。
l Sub Main过程通常是作为启动过程编写的,Visual Basic并不自动把它作为启动过程,必须通过与设置启动窗体类似的方法把它指定为启动过程:
(1) 执行“工程”菜单中的“工程属性”命令,在打开的对话框中单击“通用”选项卡,
(2) 选择Sub Main。
(3) 单击“确定”按钮,即可把Sub Main指定为启动过程。
l 如果把Sub Main指定为启动过程,则可以在运行程序时自动执行。由于Sub Main过程可先于窗体模块执行,因此常用来初始化条件。
Sub Main()
初始化
…
Form1.show
End Sub
该过程先进行所需要的初始化处理,然后显示一个窗体。
Visual Basic应用程序结构
一个完整的Visual Basic应用程序由工程文件(扩展名为.vbp)组成,在工程中含有标准模块(扩展名为.bas)、窗体模块(扩展名为.frm)和类模块(扩展名为.cls)。
10.3 闲置循环与DoEvents语句
1. 闲置循环
所谓闲置循环,就是当应用程序处于闲置状态时,用一个循环来执行其他操作。
2 . DoEvents语句
DoEvents语句,当执行闲置循环时,可以用它把控制权交给周围环境使用,然后回到原来程序继续执行。
l DoEvents既可以作为语句,也可以作为函数使用,一般格式为:
〔窗体号=〕DoEvents[()]
当作为函数使用时,DoEvents返回当前装入Visual Basic应用程序工作区的窗体号
当作为语句使用时,DoEvents可省略前、后的选择项。
例如:Private Sub Command1_Click()
For I&=1 to 2000000000
X=DoEvents
For j=1 to 1000
Next j
Cls
Print I&
Next I&
End Sub
单击命令按钮,将在窗体左上角显示循环控制变量(I&)的值,由于加了延时循环,该程序的运行需要很长的时间。加入“X=DoEvents”后,可以在执行循环的过程中进行其他操作
l DoEvents给程序执行带来一定的方便,但不能不分场合地使用。有时候,应用程序的某些关键部分可能需要独占计算机时间,以防止被键盘、鼠标或其他程序中断,在这种情况下,不能使用DoEvents语句。
小结:
在Visual Basic应用程序设计中,只有单一窗体的应用程序往往不能满足需要,特别是较复杂的应用程序,都必须通过多重窗体(Multi-Form)来实现。在多重窗体程序中,每个窗体可以有自己的界面和程序代码,分别完成不同的功能。利用多重窗体,可以设计较复杂的多功能对话窗口,从而取代如InputBox或MsgBox这样的标准对话框。本讲介绍了Visual Basic多重窗体程序设计及其环境应用的有关内容。
作业:
1、在多窗体程序中,怎样在各个窗体之间切换?
2、多窗体程序与单窗体程序有什么区别?它们在执行时又有什么区别?
3、怎样保存和装入多窗体程序?怎样指定启动窗体?
4、Visual Basic程序由哪几类模块组成?在标准模块中用Dim语句定义的变量是否是全局变量?
5、什么是闲置循环?DoEvents语句有何作用?
6、设计一个“学校情况简介”程序,该程序由8个窗体构成,其中一个窗体为封面窗体,一个窗体为列表窗体,其余6个窗体分别用来显示学校6个部门或系的介绍内容。程序运行后,先显示封面窗体,接着显示列表窗体,在该窗体中列出所要查看的部门目录(6个),双击某个目录,在另一个窗体的文本框中显示该部门的简介内容(内容自拟),每一个部门用一个窗体显示。
|