170
Visual Basic学习辅导与上机实习
6.2.2 答案与分析
一、选择题(打“*”答案有分析) 【答案】 1.A 2.BD 3.BD* 4.D 5.B 6.A 7.D 8.A* 9.D* 10.A 11.A 12.B 13.C 14.D 15.C 16.A* 17.C 18.AD 19.AB 20.C 21.A 22. B 23.DB 24.ABCDEF 【分析】
3.菜单数组中各元素名称必须相同,且在同一级菜单下,菜单项必须连续(相邻),各元素的索引要惟一,索引值可从任一数开始。
8.在菜单中,菜单项只支持Click事件。
9.在显示弹出菜单后,执行的代码是用户选择菜单项对应的Click事件过程。 16.PopupMenu 方法的语法为:
object.PopupMenu menuname,flags
通过flags指定响应鼠标的方式:0 ——缺省值,仅当使用鼠标左按钮时,弹出式菜单中的项目才响应鼠标单击;2——不论使用鼠标右按钮还是左按钮,弹出式菜单中的项目都响应鼠标单击。
二、填空题 【答案】
1.Caption Name Visible Index Checked Enabled 2.下拉式 弹出式 窗体 菜单编辑器 3.顶 4.Click
5.PopupMenu 6.–
7.Checked 8.PopupMenu 9.Click 10.&
11.菜单编辑器 顶
12.Microsoft Windows Common Controls 6.0 ToolBar 13.Align 14.ImageList
15.ToolBar1.Buttons(5).Enabled=False 16.Style(式样)
17.Microsoft Windows Common Controls 6.0 StatusBar
第6章 菜单与工具栏
171
18.Style(式样)
19.StatusBar1.Panels(2).Picture=LoadPicture(\20.单文档 多文档 21.MDIChild
22.普通窗体 MDI父窗体 MDI子窗体 23.一
24.MDI父窗体
6.3 上 机 实 习
6.3.1 题目
一、编程 1.设计两个窗体fstForm和sndForm,以fstForm为启动窗体,程序运行后,单击窗体fstForm,则卸载fstForm,然后显示窗体sndForm;若用户单击sndForm窗体,则显示fstForm,然后卸除sndForm。
2.设计一个图6-1所示的应用程序界面。 编程要求:
(1) 按表6-1要求设计菜单和快捷按钮;
表6-1
菜 单 级 别 主菜单项 一级子菜单 一级子菜单 二级子菜单 二级子菜单 一级子菜单 一级子菜单 主菜单项 一级子菜单 一级子菜单 一级子菜单 主菜单项 一级子菜单 标 题 文件(&F) 打开(&O)… 设置(&S) 字体(&F)… 颜色(&C)… - 退出(&X) 编辑(&E) 剪切(&T) 复制(&C) 粘贴(&P) 帮助(&H) 关于(&A) 名 称 mnuFile mnuOpen mnuSet mnuFont mnuColor mnuSpbar1 mnuExit mnuEdit mnuCut mnuCopy mnuPaste mnuHelp mnuAbout 快 捷 键 Ctrl+O Ctrl+F F4 Ctrl+X Ctrl+C Ctrl+V 无效(灰色) 无效 无效 状 态 工具栏按钮 有 有 有 有 有 有 (2)工具栏上的快捷按钮与相应的菜单项的事件代码一致;
(3)当用户选中某菜单项或快捷按钮时进行操作时,将该操作的状态显示在状态栏左侧的窗格上。
3.设计一个图6-2所示的由一个MDI窗体和3个MDI子窗体组成的MDI应用程序界面。
172
Visual Basic学习辅导与上机实习
图6-1 图6-2
编程要求:
(1) 执行“层叠”、“平铺”、“排列图标”子菜单项时,3个MDI子窗体分别按要求排列; (2) 单击分隔条下方的某MDI子窗体名称时,该窗体名前出现“√”,同时该窗体被激活; (3) 单击某MDI子窗体的任意位置时,该窗体被激活,同时菜单中该窗体名前出现“√”。(要求只有一个菜单中MDI子窗体名称前出现的√”)
4.试设计一个窗体,其上有两个多行文本框和一个结束按钮,并为两个文本框设计弹出式菜单,以完成在两个文本框之间完成剪切、复制和粘贴。
5.设计一个程序实现Windows系统的记事本的功能。 编程要求:
(1) 程序中含有必要菜单;
(2) 利用Windows的剪贴板对象Clipboard实现对Windows剪贴板的操作。 6.修改上题程序。 要求:
(1) 增加工具栏、状态栏,并为工具栏中的按钮编写事件代码; (2) 可同时编辑多个文件;
(3) 可以改变窗口编辑框中的字体、颜色,可以排列窗口。 二、改错或填充
1.在一个含有文本编辑框的编辑界面上,要求当用户在文本框上右击鼠标时弹出图6-3所示的快捷菜单。完成该程序。
Private Sub Text1_ ______(Button As Integer, Shift As Integer, X As Single, Y As Single)
If ________ Then ________ mnuEdit End If End Sub
2.在一个“编辑”菜单,其中的“剪切”、“复制”菜单对象名分别为submnuCut和submnuCopy,而文本框对象名为Text1,以下程序用来对“剪切”和“复制”菜单项的有效性进行控制。试
图6-3
第6章 菜单与工具栏
173
填充完成。
Private Sub Text1_ ________(Button As Integer, Shift As Integer, _ X As Single, Y As Single)
If Text1.SelLength _________ Then submnuCut.Enabled = True submnuCopy.Enabled = True Else
_____________________ _____________________ End If End Sub
3.图6-4是一个演示MDI界面的程序。MDI父窗体中含一个菜单:菜单ChildForms(含有Open Childs和Close Childs菜单项)和Window。执行Open Childs将打开所有(10个)子窗体,且以不同的颜色显示其窗口背景,执行Close Childs则关闭所有打开的子窗体;执行Window菜单下的菜单项时,按要求排列图标;当某一子窗体被激活时,该子窗体的标题显示“I've been activated!”。完成此程序,改正其中的错误。
图6-4
'父窗体的相关代码
Dim DocumentForms(10) As New ChildForm
Private Sub FormsClose_Click() Dim i As Integer For i = 0 To 9
Unload DocumentForms(i) Next End Sub
174
Visual Basic学习辅导与上机实习
Private Sub FormOpen_Click() Dim i As Integer For i = 0 To 9
DocumentForms.Show
DocumentForms.ForeColor = QBColor(Rnd * 14 + 1) ' QBColor颜色函数 DocumentForms.Caption = \ DocumentForms.Tag = i Next End Sub
Private Sub WindowArrange_Click() MDIForm1.Arrange vbArrangeIcons End Sub
Private Sub WindowCascade_Click() MDIForm1.Arrange vbCascade End Sub
Private Sub WindowTileH_Click() MDIForm1.Arrange vbTileHorizontal End Sub
Private Sub WindowTileV_Click() MDIForm1.Arrange vbTileVertical End Sub
'子窗体的相关代码 Private Sub Form_Load()
Me.Caption = \End Sub
Private Sub Form_LostFocus()
Me.Caption = \End Sub
'控件的Tag属性可用来存放运行时所需的数据
4. 在名称为Form1的窗体上画两个文本框,名称分别为Text1和Text2,均无初始内容;再建立一个下拉菜单,菜单标题为“操作”,名称为M1,此菜单下含有两个菜单项,名称分别为Copy和Clear,标题分别为“复制”、“清除”,请编写适当的事件过程,使得在运行时,单击“复制”菜单项,则把Text1中的内容复制到Text2中,单击“清除”菜单项,则清除Text2中的内容(即在Text2中填入空字符串)。运行时的窗体如图6-5所示。要求在程序中不得使用任何变量,每个事件过程中只能写一条语句。
Private Sub clear_Click()