If (room(Index).Picture = 0) Then 未加载图形的处理 Else
已加载图形的处理 End if
实验七 界面设计
一、实验目的
1.学会使用通用对话框进行编程。
2.掌握窗口菜单、弹出式菜单和实时菜单的设计方法。 3.掌握多重窗体、多文档窗体的设计和使用。
4.综合应用所学的知识,编制具有可视化界面的应用程序。
二、实验内容
实验7.1 设计一个运行界面如图7-1的应用程序。
图7-1 实验7.1的运行界面
【实验要求】
1.当选择“改变标签标题颜色”按钮后,弹出颜色对话框,为标签标题选择一个颜色。 2.当选择“编辑文本文件”按钮后,弹出打开文件对话框,指定只能选择后缀为txt的文本文件,并调用Windows记事本程序编辑用户选择的文本文件。
【实验步骤】
1.启动VB,执行File菜单中的“新建工程”命令,建立一个新的工程。
2.执行“工程”→“部件”命令,选择Microsoft Common Dialog Control 6.0选项,将CommonDialog控件添加到工具箱中。
3.在窗体上添加一个标签,两个命令按钮,一个通用对话框。
4.在“改变标签标题颜色”按钮的Click事件过程中使用ShowColor方法打开“颜色”对话框,并将对话框返回的颜色作为标签的前景色。
5.在“编辑文本文件”按钮的Click事件过程中使用ShowOpen方法按要求打开“打开对话框”,用Shell函数调用记事本程序编辑用户选择的文本文件。
- 31 -
提示:
用Shell函数运行记事本程序:
intform2 = Shell(\文件名\
注意在记事本程序名与所选的一个文本文件名之间要有一个空格符。 实验7.2 设计一个具有算术运算(+,-,*,/)及清除功能的菜单。 【实验要求】
从键盘上输入两个数,利用菜单命令求出它们的和、差、积或商,并显示出来。 【实验分析】
根据题意,可以设计三个主菜单项,分别为“计算加、减”、“计算乘、除”和“清除与退出”,它们各有两个子菜单项:
(1)“计算加、减”的子菜单项为加、减。 (2)“计算乘、除”的子菜单项为乘、除。 (3)“清除与退出”的子菜单项为清除、退出。
为了输入数据和显示计算结果,还要建立三个文本框(用来输入数据和输出结果),此外,还要用标签对输入控件标注简单的说明信息。设计界面如图7-2所示。
图7-2 实验7.2的运行界面
【实验步骤】 1.界面设计。
(1)启动VB,执行File菜单中的“新建工程”命令,建立一个新的工程。 (2)在窗体中创建三个Text文本框和三个标签。
(3)执行“工具”→“菜单编辑器”命令,进入菜单编辑器窗口。按照分析所得建立三个菜单及其子菜单。
2.编写程序代码。
每个菜单项都有且仅有Click事件,菜单项功能必须通过编程实现,此处仅以子菜单项“除”为例编写代码,其他请读者自己完成。
(1)点击子菜单“除”时,使该菜单项有标记“√”,其他子菜单项均没有该标记。 (2)按照除数和被除数必须是数值的原理,首先判断Num1.Text(文本框1)和Num2.Text(文本框2)是否是数值。
(3)按照除数不为0原理,判断除数(Num2.Text)是否为0,如果为0,提示重新输入Num2.Text的值;否则,按除法原理相除。
- 32 -
(4)将结果赋给Result.Text(文本框3)。 程序代码如下:
Private Sub Div_Click() Div.Checked=True Add. Checked =False Min. Checked =False Mul. Checked =False
If IsNumeric(Num1.Text) And IsNumeric(Num2.Text) Then
If Val(Num2.Text)=0 Then
MsgBox \除数不为0,请从新输入!\ Num2.Text=\ Num2.SetFocus
Else
Result.Text=Val(Num1.Text)/Val(Num2.Text)
End If
End If
End Sub
提示:当文本框输入的是非数字字符时,我们也可用文本框的Change事件进行控制,使加、减、乘、除子菜单项的Enabled为False。例如对于Num1文本框的输入控制: Private Sub Num1_Change() If Not IsNumeric(Num1) Then
Div. Enabled= False
Add. Enabled=False
Min. Enabled=False Mul. Enabled=False Else
Div. Enabled= True
Add. Enabled= True
Min. Enabled= True Mul. Enabled= True End If End Sub
这样加、减、乘、除的程序代码就更简单了。如以上“除”的代码为:
Private Sub Div_Click() Div. Checked =True Add. Checked =False
Min. Checked =False Mul. Checked =False
If Val(Num2.text)=0 Then
MsgBox \除数不为0,请从新输入!\ Num2.Text=””
Num2.SetFocus
Else
Result.text=Val(Num1.Text)/Val(Num2.Text)
End If
End Sub
- 33 -
实验7.3 设置动态菜单。 【实验要求】
在实验7.2的基础上增加“应用”菜单,其子菜单项为“新建”、“已计算”和“-”(分隔线)。要求在“-”分隔线下保留最近已计算的五次算术式。
【实验步骤】
1.执行“工具”→“菜单编辑器”命令,进入菜单编辑器窗口。在菜单编辑器中“计算加、减”前添加“应用”菜单及其子菜单“新建”、“已计算”(CaledMenu),设置其索引属性为0,使CaledMenu成为菜单数组,Visible属性设置为False,再插入一个“-”,Visible属性也设置为False。界面设计完毕,如图7-3(a)。
2.在各菜单项的Click事件过程中编写相应的功能代码。
图7-3(a) 图7-3(b)
图7-3 实验7.3的运行界面
提示:
(1)设定一个全局变量imenucount记录已计算的算术式的数量,当imenucount小于5时,每打开一个文件,就用Load方法向CaledMenu()数组加入动态菜单成员,并设置菜单项标题为所计算的算术式,对于第五个以后的计算式不再需要加入数组元素,采用先进先出的算法刷新记录最先使用的动态菜单成员的标题。
(2)加、减、乘、除的单击事件都要在实验7.2的基础上加上一些代码,以下以除为例:
imenucount=imenucount+1 If imenucount<5 Then bar.visible=True
Load caledmenu(imenucount)
caledmenu(imenucount).Caption=Num1.Text & \“=” & Result.Text
caledmenu(imenucount).Visible=True else
I=imenucount mod 4 If I=0 Then I=4
caledmenu(I).Caption= Num1.Text & “/” & Num2.Text & “=” & Result.Text End if
以上代码加在实验7.2除法程序中Result.Text=Val(Num1.Text)/Val(Num2.Text)与End If 之间。运行界面如图7-3(b)所示。
实验7.4 建立一个弹出式菜单,用来改变文本框中字体的属性。
- 34 -
【实验要求】
1.建立如图7-4所示的运行界面,当右击窗体时弹出菜单。 2.通过菜单控制文本框的字体格式。
图7-4 实验7.4的运行界面
【实验步骤】
1.执行File菜单中的“新建工程”命令,建立一个新的工程。 2.在窗体中创建一个Text1文本框。
3.执行“工具”→“菜单编辑器”命令,进入菜单编辑器窗口。按表7.1设置弹出式菜单的各个属性项。
表7.1 菜单属性设置
标题 字体格式化 ····粗体 ····20 ····隶书 ····退出 Name PopFormat PopBold Font20 Fontls Quit 可见性 False True True True True 4.编写窗体的MouseDown事件过程,使按下鼠标右键时弹出菜单。建立弹出式菜单的操作完成。
5.编写各子菜单项的Click事件代码,使他们实现相对应的功能。 实验7.5 多重窗体。 【实验要求】
1.建立一个奖学金判断应用程序,在该应用程序中共使用3个窗体,主窗体有3个命令按钮,一个文本框,一个标签,如图7-5(a)。
2.“数据输入”窗体上有4个标签、4个文本框、2个命令按钮,如图7-5(b)。该窗体用于输入一个待查结果的学生成绩。
3.“查看结果”窗体上有2个命令按钮、2个文本框,如图7.5(c)。该窗体用于判断并显示输入成绩的学生是否符合奖学金条件(4门课程成绩总分大于350分,每门课程均超过80分)。
4.“数据输入”窗体通过主窗体的“数据输入”按钮弹出,“查看结果”窗体通过主窗体的“显示结果” 按钮弹出。
- 35 -