【vb精品源码栏目提醒】:网学会员,鉴于大家对vb精品源码十分关注,论文会员在此为大家搜集整理了“多重窗体程序设计 - 讲义教程”一文,供大家参考学习!
第 10 章 多 重窗体程序设计本章内容及其要求1、掌握与多重窗体应用程序设计相关的语句2、掌握新建窗体与添加窗体文件操作和启动窗体的设置3、了解闲置循环与 DoEvents 语句的作用4、掌握
VB 工程的结构本章重点与多重窗体应用程序设计相关的语句本章难点闲置循环与 DoEvents 语句的作用多重窗体应用程序综述一个简单的应用程序只有一个简单窗口, 应用程序所有的功能都在这一个窗口中体现出来, 而稍微复杂的程序可能包含有多个窗口和多个对话框,根据完成的任务,相互关联在一起。
10.1 多重窗体的基本操作1.添加窗体 单击“工程 添加窗体”命令或单击工具条上的“添加窗体”按钮,打开“添加窗体”对话框,单击“新建”选项卡,从列表框中选择一种新窗体的类型;或者单击“现存”选项卡,将属于其他工程的窗体添加到当前过程中。
一个具有多个窗口的应用程序中, 根据多个窗口之间内在的联系,要安排它们的出场顺序。
一般要有下列的模式:封面——用户登录窗口——软件主界面 (根据需要打开其它多个不同的对话框)这里有几个问题需要解决:1、启动窗体的指定。
即:谁第一个出场; 一般情况下封面应该是第一个出场的窗体。
2、各窗口之间的衔接。
当一个窗体的任务完成以后,下一个出场的是谁,如何衔接。
当设计好一个应用程序中的多个窗体后,根据功能上的规划,确定启动应用程序后,第一个被启动的窗体,即启动窗体。
如注册窗体,软件的封面等等。
方法:执行“工程”菜单中选择“工程 N 属性”,在“通用”选项卡的“启动对象”下拉式列表框中选择要作为启动窗体的对象。
也可以在工程资源管理器中右击工程名,选“工程属性”。
如果没有指定启动窗体, 则第一个被创建的窗体就是应用程序的启动窗体。
与多窗体相关的语句与方法1 、装入窗体(Load 语句)装入一个指定的窗体,即将指定的窗体装载到内存中;格式:Load 窗体名称2、卸载窗体(UnLoad 语句)格式:Unload 窗体名 ——关闭指定的窗体。
作为特殊应用, Unload Me 语句可关闭当前激活的窗体本身。
3、关闭应用程序语句 End 格式:End ——关闭应用程序的所有窗体。
如果使用 End 语句则关闭整个应用程序,它的所有的窗体都将被关闭。
4、显示窗体(Show 方法)用来在屏幕上显示指定的窗体。
使用方法:窗体名称 .Show模式说明:(1) 窗体名称为要显示的窗体名,缺省时显示当前窗体;(2) “模式”参数为可选项,其取值为 0 或 1,它们的含是: 0 表示非模式窗体,1 表示模式窗体,默认值为 0(注:模 式窗体不关闭时,不能操作其它窗体);(3) 模式窗体与非模式窗体之区别: 模式窗体战用整个程序 的控制权,不关闭模式窗体,无法访问其它窗体;(4) 调用 show 方法与将窗体的 visible 属性设置为 true 具 有相同效果。
5、隐藏窗体(Hide 方法)用来隐藏屏幕上指定的窗体, 直到以后使用 Show 方法重新显示窗体。
使用方法:窗体名称 .Hide 应用特例:Me.Hide 隐藏自身。
Hide 方法的功能与将 Visible 属性设置为 False 是等同的。
例 10-1 设计一个程序:三个窗体,第一个窗体为登录窗体,如果输入密码正确,则显示第二个窗体,单击第二个窗体,显示第三个窗体。
Private Sub Command1_ClickIf Text1.Text 1234567 ThenForm2.ShowElseText1.Text 你不是合法用户,再见!End IfEnd SubPrivate Sub Form_ClickForm3.ShowEnd SubPrivate Sub Image1_ClickEndEnd Sub例 2 在上例中,把 form2 设置为启动窗体10.2 Sub Main 过程Sub Main 过程有时在一个应用程序中,启动一个窗体前,先需要做一些初始化工作,可用在标准模块中的名为 Main 的过程实现,再将 Main过程指定为启动对象。
如在前面的应用程序中,建立一个 Main 过程,并将其指定为启动对象,完成应用程序窗体间的衔接。
格式:Sub Main ()…..End Sub说明:标准模块可以有多个,但 Sub Main 过程只能有一个,而且其名称必须是 Main。
Sub main 过程必须在标准过程中建立,而不能包含在窗体模块中。
创建 Sub main 过程的方法是:(1) 单击工程菜单的添回模块命令, 为当前工程添加一个标 准模块。
(2) 打开标准模块代码编辑窗口,在所有过程的外部输入 “sub main”回车则产生对 sub main 过程的声明。
(3) 为 sub main 过程编写代码例 3 为例 1 创建一个 Sub main 过程,在此过程中设置显示form1.10.3 闲置循环与 DoEvents 语句Visual basic 是事件驱动的,这有两个方面的含义,一方面当有事件发生时,才执行相应的过程;当没有事件发生时,应用程序处于闲置状态。
另一方面当正在执行一个过程时,CPU 不能对其它事件进行处理,此时 CPU 处于忙碌状态,其它事件只能等待。
那么能不能让 CPU 在执行一个过程的过程中,对别的事件进行响应呢?这就是
VB 的闲置循环所要解决的问题。
闲置循环就是当 CPU空闲时,进行一些工作,当有事件发生时,处理发生的事件,处理完毕,再接着进行前面的工作。
通过执行 Doevents 语句进入这种状态。
格式:变量Doevents变量Doevents功能:进入闲置循环状态,返回当前装入
VB 中应用程序工作区的窗体号。
Doevents 可以作为语句使用,也可以作为函数使用。
例 10-4 建立一个按钮,输入下面的代码,验证闲置循环的执行方式。
Private Sub command1_ClickFor i 1 To 20000000X DoEvents For j 0 To 100000000 Next jClsPrint iNext iEnd SubPrivate Sub Command2_ClickEndEnd Sub运行这个程序,由于加入了“xdoevents”可以在执行循环的过程中执行其它操作:重设窗体大小,把窗体化为图标等。
如果没有这个语句,则在程序运行期间不能执行其它操作。
例 10-5 编写程序:验证闲置循环和 doevents 语句。
Sub mainForm1.ShowDo While DoEventsForm1.Image1.Left Form1.Image1.Left 1If Form1.Image1.Left Form1.Width ThenForm1.Image1.Left Form1.Image1.Left - Form1.WidthEnd IfBeepLoopEnd SubPrivate Sub Command1_ClickFontSize 16Print 执行 command1_click 事件过程For i 1 To 10000000xi2 Next iEnd SubPrivate Sub Command3_ClickEndEnd Sub如果没有 doevents ,则程序运行期间,不能执行其它动作。
10.4 Visual Basic 工程管理 应 用 程 序 工 程 文 件 .v b p 窗 体 模 块 类 模 块 标 准 模 块 .frm 文 件 . c ls 文 件 .b a s 文 件 声 子 程 函 数 子 程 声 子 程 函 数 明 序 过 过 程 序 过 明 序 过 过 程 部 程 fu n c 程 部 程 fu n c 分 s u b t io n s u b 分 s u b t io n
VB 中的工程是一个应用程序的文件集合,因此程序开发总是从创建工程开始。
一个
VB 工程通常包括多种类型的文件,其中最通常的文件是:(1) 工程文件 工程文件包含与该工程有关的全部文件、 对 象以及所设置的环境选项的信息。
整个工作对应一个工程文 件,扩展名为.vbp(2) 窗体文件 工程中的每一个窗体对应一个窗体文件, 扩 展名为.frm.(3) 标准模块文件 工程中的标准模块通常用来定义供其 它窗体或模块引用的全局变量、变量、过程等。
标准模块文 件的扩展名为.bas习题十一、选择题1. 下列操作不能自由式工程中添加窗体的命令是___________.A 执行工程菜单中的添加窗体命令 B 单击工具栏上的添加窗体C 右击窗体,在弹出的菜单中选择“添加窗体”命令D 右击工程资源管理器,在弹出的菜单中选择“添加命令”,然后在下一级菜单中选择“添加窗体”命令2.在一个工程中含有多个窗体时,其中的启动窗体是___________。
A)第一个添加的窗体 B)启动
VB 时建立的窗体C)最后一个添加的窗体 D)在“工程属性”指定的窗体3.设有一个工程文件,包含 form1、model1、model2 等模块。
在 form1 的通用部分声明一个变量 Public xas Integer,form1 中包含若干事件过程和一个通用过程 Getfile,以下关于 X 的作用域的描述中正确的是____________。
A)在 model1 中可以使用 X B)X 的作用范围不包含 Form1 中的 GetfileC)X 的作用范围是 Form1 D)X 的作用范围是整个过程4.以下关于
VB 模块的描述中正确的是_____________。
A) 标准模块的所有过程可以在整个工程文件的范围内被调用B) 窗体模块 Form1 中的过程可以调用其它窗体中被声明为 Public 的过程C) 如果工程文件中包含 Sub main 过程,则运行该工程时,一定先执行 Sub main 过程D) 如果工程文件中不包含 Sub main 过程,则程序从第一个创建的窗体验生活开始运行5.关于多重窗体应用程序,以下叙述中不正确的是_____________。
A)对于多重窗体应用程序,可以有多个当前窗体B)多重窗体应用程序的启动窗体可以在设计时指定C)多重窗体应用程序中每个窗体作为一个磁盘文件保存,所有窗体、标准模块等作为一个工程文件保存D) 多重窗体应用程序中可以编译生成一个 exe 文件二、填空题 1. 若要加载一个新窗体,可以使用 load 语句实现;若要卸载一个窗体,可以 unload 语句实现。
2. 若要显示一个窗体,可以使用 show 方法;若要隐藏一个窗体,可以使用 hide 方法清除一个窗体 上的内容,使用 cls 方法实现。
3. 能够在整个工程文件中使用的全局变量应该在标准模块中定义。
4. 工程文件的扩展名是 VBP标准模块文件的扩展名是 bas;窗体文件的扩展名是 frm;若干工程构 成一个工程组文件为 vbg. 5.
VB 应用程序主要由窗体、标准、类模块等三种模块组成。
6. 启动窗体在工程属性对话框中指定;为了打开此对话框,应该执行工程菜单中的工程 N 属性命令。
7. 全局变量必须在标准模块中定义,所使用的语句为 Public。
8. Do events 语句的作用是在程序执行时,把控制权交回给环境。
9.三、程序设计题设计一个包含 form1 和 form2 的两个窗体的应用程序,form1为启动窗体,单击 form1 隐藏之,显示 form2;单击 form2 时,隐藏之,显示 form1。
双击任何一个窗体时,程序结束。
Private Sub Form_ClickForm2.HideForm1.ShowEnd SubPrivate Sub Form_ClickForm1.HideForm2.ShowEnd Sub