第九章 菜单、多重窗体多重文档
菜单的设计
多重窗体的设计
多重文档界面的设计
本章主要内容
9.1 VB菜单设计
VB中常用的菜单有,
?下拉式菜单
?弹出式菜单。
下拉式菜单设计
?VB中设计下拉式菜单时,主要设计两个部分,
? 菜单栏,即主菜单,它包含多个菜单项。
? 设计各级子菜单,子菜单可以是可执行的菜单命令,
或弹出下级子菜单,或是分隔条。
?VB“菜单编辑器, 窗口一般分为三个部分,
? 属性区
? 编辑区
? 显示区
菜单主要属性
属性名
属性值
说明
标题 (Caption)
字符型
菜单项显示字符串
名称 (Name)
字符型
菜单控件名称
索引
整型
指定菜单控件数组序号
快捷键
字符型
指定菜单命令的快捷键
复选
逻辑型
是否允许菜单项设置复选框
有效
逻辑型
指定菜单项是否可操作
可见
逻辑型
是否将菜单项显示在菜单上
显示窗口列表
逻辑型
在 MDI中指定是否有子窗体列表
?分隔线:在标题栏中填入, -”,则在菜单中显
示一条分隔线。
?键盘选择:在菜单项标题某字母前加, &” 字
符,可使该字符成为访问键(按 Alt+该字符,
可以选择相应的菜单项)。
例 9-1
Private Sub Add_Click()
Label1.Caption = "+"
Label2.Caption = "=" & (Val(Text1.Text) +
Val(Text2.Text))
End Sub
Private Sub Sub_Click()
Label1.Caption = "-"
Label2.Caption = "=" & (Val(Text1.Text) -
Val(Text2.Text))
End Sub
Private Sub Exit_Click()
End
End Sub
菜单的增减
?Load 菜单项控件数组 (Index):从菜单控件数
组中添加一个新的菜单项。
?UnLoad菜单项控件数组 (Index):从菜单控件
数组中删除一个菜单项。
参见例 9-2
弹出式菜单
? 弹出式菜单:是一种独立于菜单栏而显示在窗体上的浮
动菜单。
? 创建弹出式菜单:与下拉式菜单方法一样,只是一般将
其最高一级的, 可见, 设置为 False。
? 弹出式菜单的一般调用,
<Object>.PopupMenu<菜单名 >
参见例 9-3
9.2 多重窗体
?VB中允许应用程序有多个窗体,每个窗体有
自己的代码和不同的操作,从而实现复杂的
功能。
?有关语句,
? Load <窗体名 >:将窗体载入内存,但并不显示。
? UnLoad <窗体名 >:将窗体从内存中消除。
? <窗体名 >,Show [模式 ]:显示窗体,模式取 0
(非模态)或 1(模态),默认模式为 0。
? <窗体名 >,Hide:隐藏窗体(并不从内存中消
除)。
多重窗体设计
?多重窗体设计与单重窗体设计一致,大致可分
为三步,
? 建立界面
? 编写代码
? 运行程序
参见例 9-4
?指定启动窗体:在, 工程 /工程属性 /通用, 中可
以根据需要指定应用程序的启动窗体。
9.4 多重文档界面
?多重文档界面( MDI),在一个窗体中包含
多个子窗体,可以同时显示多个文档,每个
文档都有自己的显示窗体。 MDI具有以下特
点,
? 所有子窗体均显示在 MDI中,且可以移动、改变
大小,但不能起越 MDI边界。
? 子窗体被最小化时,图标显示在 MDI内,而非
Windows的任务栏上。
? 子窗体最大化时,子窗体的标题栏与 MDI的标题
栏组合在一起,显示在 MDI的标题栏上。
? 活动子窗体的菜单显示在 MDI上,而非子窗体上。
9.3 模块
?VB中主要有三种模块,
? 标准模块:由全局变量声明、模块层声明及通用
过程等组成,所以也叫全局模块或总模块。
? 窗体模块:每个窗体都有一个对应的窗体模块,
通常包括声明、通用过程及事件过程三部分。
? Sub Main过程:通常设置为启动对象,主要用
于应用程序的初始化工作;该过程必须建立在标
准模块中,一个程序中可以有多个标准模块,但
最多只能有一个 Sub Main模块。
与 MDI有关的常用属性、事件和方法
?属性
? MdiChild:该窗体作为 MDI的子窗体。
?方法
? Dim <对象名 > As [New]<对象名 ><对象类型 >:
增加 MDI子窗体。
? 其中 <对象名 >为已存在的对象。
? 其中 <对象类型 >为以前未指定的新对象。
?事件
? QueryUnload:当关闭 MDI时,MDI父窗体首先触
发该事件,然后所有子窗体触发该事件。该事件用
于在关闭程序前提出询问,以防止窗体中还有未完
成任务被意外中止。
建立 MDI应用程序的一般步骤
?创建 MDI窗体
?创建子窗体:即创建普通窗体,并将其
MDIChild属性设置为 True。
?创建 MDI窗体的控制区。
?编写程序代码。
参见例 9-5
?综合应用举例,
?例 9-6 简单记事本
?例 9-7 多重窗体应用:计算学生学习成绩