第6章 菜单与工具栏 165 第6章 菜单与工具栏
6.1 学习要点与必备知识
【学习要点】
? 用户菜单、弹出式菜单的设计。 ? 工具栏、状态栏的设计(选学内容)。 ? MDI窗体的基本构成与设计。 【必备知识】 1.菜单
菜单系统组成、菜单控件属性(Name、Caption、Checked、Enabled、Visible)。快捷键及访问键的设置、菜单项间的分隔线设置、菜单控件的事件(Click事件)、利用控件数组动态创建菜单(菜单项用Load语句创建,用UnLoad清除)。
2.弹出式菜单
弹出式菜单特点、设计方法、弹出式菜单的显示(PopupMenu方法的使用)。 3.工具栏和状态栏(选学内容)
图像列表控件ImageList的功能和使用,工具栏ToolBar属性的设置,工具栏按钮单击事件及代码设计、状态栏StatusBar控件上的窗格(Panel对象)属性(样式Style、Text、对齐Align、图片Picture等)。
4.多文档界面MDI
标准窗体、MDI父窗体和MDI子窗体的概念、常用的属性(ActiveForm、ActiveControl、AutoShowChildren、MdiChild)、常用的方法(Arrange方法)、常用的事件(QueryUnload事件)及应用。
6.2 习 题 精 选
6.2.1 题目
一、选择题
1.在菜单中放置分隔栏的方法是将该菜单项的Caption设为( )
A.连字符(-) B.下划线(__) C.连接符(&) D.两个连续的下划线(_ _) 2.以下陈述中正确的是( )(多选)
A.分隔栏可以出现在顶级菜单项中
166
Visual Basic学习辅导与上机实习
B.顶级菜单项的Checked属性不能为True
C.对同一个菜单项,为其指定访问键后,就不能再为其指定快捷键 D.菜单项的Enabled属性设为False后,它会被灰化显示 3.菜单项数组必须满足( )(多选)
A.Name属性值可以不同 B.有相同的行首缩进 C.所有元素在菜单中可以不连续 D.各元素必有惟一索引值
4.为了响应工具栏上的多个按钮的单击事件,可以通过按钮的( )属性识别是由哪个按钮引发。
A.Button B.Key C.Index D.B 和C均可
5.在使用菜单编辑器创建菜单时,可在菜单名称中某字母前插入( )符号,那么在运行程序时按Alt键和该字母键就可以打开该命令菜单。
A.下划线 B.& C.$ D.@
6.如果要在两个菜单命令项之间加一条分隔线,可在标题文本框中键入( )。
A.– B.+ C.& D.# 7.在用菜单编辑器设计菜单时,必须输入的项是( )。
A.快捷键 B.标题 C.索引 D.名称 8.菜单控件仅支持以下( )事件。
A.Click B.MouseDown C.KeyPress D.Load 9.在使用弹出菜单时,下面说法不正确的情况是( )。
A.只能同时显示一个弹出菜单
B.使用PopupMenu 方法来显示弹出菜单
C.在设计时,应该将弹出菜单的顶层菜单项的Visible属性设为False D.在显示弹出菜单以后,将执行以后的代码 10.下列不能打开菜单编辑器的操作是( )。
A.按Ctrl+E
B.单击工具栏中的“菜单编辑器”按钮 C.执行“工具”菜单中的“菜单编辑器”命令 D.按Shift + Alt + M
11.假定有一个菜单项,名为MenuItem,为了在运行时使该菜单项失效(变灰),应使用的语句为( )。
A.MenuItem. Enabled=False B.MenuItem. Enabled=True C.MenuItem. Visible=True D.Menultem. Visible=False 12.以下关于菜单编辑器中“索引”项的叙述中,错误的是( )。
A.“索引”确定了菜单项显示的顺序 B.“索引”是控件数组的下标
C.使用“索引”时,可有一组菜单项具有相同的“名字”
D.使用“索引”后,在单击菜单项的事件过程中可以通过“索引”引用菜单项 13.用户通过设置菜单项的( )属性值为False来使该菜单项不可见。
第6章 菜单与工具栏
167
A.Hide B.Checked C.Visible D.Enabled 14.下列关于菜单的说法中,错误的是( )。
A.每个菜单项都是一个控件,与其他控件一样也有其属性和事件 B.除了Click事件之外,菜单项不可以响应其他事件 C.菜单项的索引号可以不连续 D.菜单项的索引号必须从1开始 15.通常一个Windows 应用程序的功能都能够通过菜单交互方式来进行。下列关于菜单交互方式的选项中错误的是( )。
A.用户在一组多个可能的对象中进行选择 B.各种可能的选择以菜单项的形式分列显示 C.菜单项的分组设置一般不分类
D.每个菜单项被选取都会导致执行某一种操作
16.在下列程序中,( )不论使用鼠标右键还是左键弹出的菜单中的菜单项都响应鼠标单击。
A.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu Menu_test, 2 End If End Sub
B.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
PopupMenu Menu_test, 0 End Sub
C.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
PopupMenu Menu_test End Sub
D.Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (Button = vbLeftButton) Or (Button = vbRightButton) Then PopupMenu Menu_test End If End Sub
17.以下有关由多个窗体和标准模块组成的应用程序设计方法的叙述中,错误的是( )。
A.在缺省情况下,设计时的第一个窗体被指定为启动窗体 B.通过人为设置,可指定任一窗体为启动窗体
C.通过人为设置,可指定标准模块中的Main()过程为启动过程 D.通过人为设置,可指定窗体模块中的Main()过程为启动过程 18.以下陈述中正确的是( )。(多选)
A.一个应用程序中只能有一个MDI父窗体 B.MDI父窗体上可以放置任意控件
168
Visual Basic学习辅导与上机实习
C.可以用Print方法在MDI父窗体上显示信息
D.一个MDI子窗体最小化后,其图标显示在MDI父窗体中 19.要在工程中创建一个MDI父窗体只要( )。(多选)
A.在菜单中选择\工程\—\添加MDI窗体\
B.在工具栏的添加按钮的下拉菜单中选择\窗体\C.新建一个窗体,其将MDIChild属性设为True D.新建一个窗体,其将MDIChild属性设为False
20.要使MDI子窗体在加载时就自动显示出来,应( )。
A.将Scrollbars属性设为True B.将Scrollbars属性设为False
C.将AutoShowChildren属性设为True D.将AutoShowChildren属性设为False
21.使用MDI窗体时,对于下面的说法选择正确的选项( )。
A.能在MDI窗体中打开多个文档界面 B.子窗体是模式窗口
C.子窗体的和父窗体能够同时显示自己的菜单
D.如果子窗体的BorderStyle属性为vbFixedToolWindow,其大小将不能改变
22.多窗体程序由多个窗体组成。在缺省情况下,VB在执行应用程序时,总是把( )指定为启动窗口。
A.不包含任何控件的窗口 B.设计时的第一个窗体 C.命名为Frm1的窗体 D.包含控件最多的窗体
23.要使自定义的对话框Form1退出,可以在该对话框的“退出”按钮的Click事件过程中使用以下( )中的一个语句。(多选)
A.Form1.Unload B.Unload Form1 C.Form1.Hide D.Unload Me
24.MDI窗体的QueryUnload事件将在( )时候被触发。(多选)
A.在代码中使用Unload语句 B.当前Windows操作结束
C.利用Windows任务管理器关闭应用程序 D.MDI窗体正在关闭 E.窗体的所有者正在关闭
F.双击窗体图标或选择控制菜单中的“关闭”命令 二、填空题
1.菜单编辑器的“标题”选项对应于菜单控件的____________属性。 菜单编辑器的“名称”选项对应于菜单控件的____________属性。 菜单编辑器的“可见”选项对应于菜单控件的____________属性。 菜单编辑器的“索引”选项对应于菜单控件的____________属性。 菜单编辑器的“复选”选项对应于菜单控件的____________属性。
第6章 菜单与工具栏
169
菜单编辑器的“有效”选项对应于菜单控件的____________属性。 2.菜单分为______菜单和______菜单,菜单总与__________相关联,设计菜单需要在______中设计。
3.不可以给______级菜单设置快捷键。
4.菜单中的分隔条是一种菜单控件,但不响应__________事件,也不能被选中。 5.为显示弹出式菜单,可以使用__________方法。
6.如果菜单标题的某个字母前输入一个“&”符号,那么该字母就成了热键字母;如果在建立菜单时在标题文本框中输入一个“______”,那么显示时形成一个分隔符。
7.如果把菜单项的______属性设置为True,则该菜单项成为一个选项。
8.不管是在窗口顶部菜单条上显示的菜单,还是隐藏的菜单,都可以用______方法把它们作为菜单在程序运行期间显示出来。
9.菜单设计中每一个菜单项是一个控件,这些控件都只有一个______事件。
10.为了能够通过键盘访问主菜单项,可在菜单编辑器的“标题”选项中的某字母前插入_______符号。运行时,该字母会带有下划线,按Alt键和该字母就可以访问相应的主菜单项。
11.弹出式菜单在___________中设计,且一定要使其______级菜单不可见。
12.要使用工具栏控件设计工具栏,应先在“部件”对话框中选择__________,然后从工具箱中选__________控件。
13.设置工具栏控件的__________属性可以改变工具栏在窗体上的位置。
14.要给工具栏按钮添加图像,应首先在__________控件中添加所需要的图像,然后在工具栏的属性页中选择与该控件相关联。
15.运行时,要使工具栏ToolBar1中索引值为5的按钮无效,应使用语句:________________________________。
16.要使工具栏控件的某按钮呈菜单的式样,可以在其属性页中设置其______选项为5-tbrDropDown。
17.要使用状态栏控件设计状态栏,应首先在“部件”对话框中选择________________,然后从工具箱中选择__________控件。
18.状态栏由多个“窗格”对象组成,“窗格”对象的特征是通过状态栏的_____属性决定的。
19.要在运行时给状态StstusBar1的第二个窗格添加一幅图片,该图片由文件“c:\\windows\\glass.ico”指定,应使用语句:______________________________。
20.SDI指__________界面,MDI指__________界面。
21.要将某窗体定义为一个MDI子窗体,需要将其__________属性设置为True 22.在一个MDI应用程序中,可以含有________、_______、______这3类窗体。 23.一个应用程序最多可以有__________个MDI父窗体。
24.在运行时,MDI父窗体中的子窗体最小化时,其图标将显示在_________中。