vb菜单及工具栏.docx
- 文档编号:4915917
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:15
- 大小:69.82KB
vb菜单及工具栏.docx
《vb菜单及工具栏.docx》由会员分享,可在线阅读,更多相关《vb菜单及工具栏.docx(15页珍藏版)》请在冰豆网上搜索。
vb菜单及工具栏
第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.分隔栏可以出现在顶级菜单项中
B.顶级菜单项的Checked属性不能为True
C.对同一个菜单项,为其指定访问键后,就不能再为其指定快捷键
D.菜单项的Enabled属性设为False后,它会被灰化显示
3.菜单项数组必须满足()(多选)
A.Name属性值可以不同B.有相同的行首缩进
C.所有元素在菜单中可以不连续D.各元素必有惟一索引值
4.为了响应工具栏上的多个按钮的单击事件,可以通过按钮的()属性识别是由哪个按钮引发。
A.ButtonB.KeyC.IndexD.B和C均可
5.在使用菜单编辑器创建菜单时,可在菜单名称中某字母前插入()符号,那么在运行程序时按Alt键和该字母键就可以打开该命令菜单。
A.下划线B.&C.$D.@
6.如果要在两个菜单命令项之间加一条分隔线,可在标题文本框中键入()。
A.–B.+C.&D.#
7.在用菜单编辑器设计菜单时,必须输入的项是()。
A.快捷键B.标题C.索引D.名称
8.菜单控件仅支持以下()事件。
A.ClickB.MouseDownC.KeyPressD.Load
9.在使用弹出菜单时,下面说法不正确的情况是()。
A.只能同时显示一个弹出菜单
B.使用PopupMenu方法来显示弹出菜单
C.在设计时,应该将弹出菜单的顶层菜单项的Visible属性设为False
D.在显示弹出菜单以后,将执行以后的代码
10.下列不能打开菜单编辑器的操作是()。
A.按Ctrl+E
B.单击工具栏中的“菜单编辑器”按钮
C.执行“工具”菜单中的“菜单编辑器”命令
D.按Shift+Alt+M
11.假定有一个菜单项,名为MenuItem,为了在运行时使该菜单项失效(变灰),应使用的语句为()。
A.MenuItem.Enabled=FalseB.MenuItem.Enabled=True
C.MenuItem.Visible=TrueD.Menultem.Visible=False
12.以下关于菜单编辑器中“索引”项的叙述中,错误的是()。
A.“索引”确定了菜单项显示的顺序
B.“索引”是控件数组的下标
C.使用“索引”时,可有一组菜单项具有相同的“名字”
D.使用“索引”后,在单击菜单项的事件过程中可以通过“索引”引用菜单项
13.用户通过设置菜单项的()属性值为False来使该菜单项不可见。
A.HideB.CheckedC.VisibleD.Enabled
14.下列关于菜单的说法中,错误的是()。
A.每个菜单项都是一个控件,与其他控件一样也有其属性和事件
B.除了Click事件之外,菜单项不可以响应其他事件
C.菜单项的索引号可以不连续
D.菜单项的索引号必须从1开始
15.通常一个Windows应用程序的功能都能够通过菜单交互方式来进行。
下列关于菜单交互方式的选项中错误的是()。
A.用户在一组多个可能的对象中进行选择
B.各种可能的选择以菜单项的形式分列显示
C.菜单项的分组设置一般不分类
D.每个菜单项被选取都会导致执行某一种操作
16.在下列程序中,()不论使用鼠标右键还是左键弹出的菜单中的菜单项都响应鼠标单击。
A.PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then
PopupMenuMenu_test,2
EndIf
EndSub
B.PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
PopupMenuMenu_test,0
EndSub
C.PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
PopupMenuMenu_test
EndSub
D.PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
If(Button=vbLeftButton)Or(Button=vbRightButton)Then
PopupMenuMenu_test
EndIf
EndSub
17.以下有关由多个窗体和标准模块组成的应用程序设计方法的叙述中,错误的是()。
A.在缺省情况下,设计时的第一个窗体被指定为启动窗体
B.通过人为设置,可指定任一窗体为启动窗体
C.通过人为设置,可指定标准模块中的Main()过程为启动过程
D.通过人为设置,可指定窗体模块中的Main()过程为启动过程
18.以下陈述中正确的是()。
(多选)
A.一个应用程序中只能有一个MDI父窗体
B.MDI父窗体上可以放置任意控件
C.可以用Print方法在MDI父窗体上显示信息
D.一个MDI子窗体最小化后,其图标显示在MDI父窗体中
19.要在工程中创建一个MDI父窗体只要()。
(多选)
A.在菜单中选择"工程"—"添加MDI窗体"
B.在工具栏的添加按钮的下拉菜单中选择"MDI窗体"
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.UnloadB.UnloadForm1
C.Form1.HideD.UnloadMe
24.MDI窗体的QueryUnload事件将在()时候被触发。
(多选)
A.在代码中使用Unload语句
B.当前Windows操作结束
C.利用Windows任务管理器关闭应用程序
D.MDI窗体正在关闭
E.窗体的所有者正在关闭
F.双击窗体图标或选择控制菜单中的“关闭”命令
二、填空题
1.菜单编辑器的“标题”选项对应于菜单控件的____________属性。
菜单编辑器的“名称”选项对应于菜单控件的____________属性。
菜单编辑器的“可见”选项对应于菜单控件的____________属性。
菜单编辑器的“索引”选项对应于菜单控件的____________属性。
菜单编辑器的“复选”选项对应于菜单控件的____________属性。
菜单编辑器的“有效”选项对应于菜单控件的____________属性。
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父窗体中的子窗体最小化时,其图标将显示在_________中。
6.2.2答案与分析
一、选择题(打“*”答案有分析)
【答案】
1.A2.BD3.BD*4.D5.B
6.A7.D8.A*9.D*10.A
11.A12.B13.C14.D15.C
16.A*17.C18.AD19.AB20.C
21.A22.B23.DB24.ABCDEF
【分析】
3.菜单数组中各元素名称必须相同,且在同一级菜单下,菜单项必须连续(相邻),各元素的索引要惟一,索引值可从任一数开始。
8.在菜单中,菜单项只支持Click事件。
9.在显示弹出菜单后,执行的代码是用户选择菜单项对应的Click事件过程。
16.PopupMenu方法的语法为:
object.PopupMenumenuname,flags
通过flags指定响应鼠标的方式:
0——缺省值,仅当使用鼠标左按钮时,弹出式菜单中的项目才响应鼠标单击;2——不论使用鼠标右按钮还是左按钮,弹出式菜单中的项目都响应鼠标单击。
二、填空题
【答案】
1.CaptionNameVisibleIndexCheckedEnabled
2.下拉式弹出式窗体菜单编辑器
3.顶
4.Click
5.PopupMenu
6.–
7.Checked
8.PopupMenu
9.Click
10.&
11.菜单编辑器顶
12.MicrosoftWindowsCommonControls6.0ToolBar
13.Align
14.ImageList
15.ToolBar1.Buttons(5).Enabled=False
16.Style(式样)
17.MicrosoftWindowsCommonControls6.0StatusBar
18.Style(式样)
19.StatusBar1.Panels
(2).Picture=LoadPicture("c:
\windows\glass.ico")
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)
mnuFile
一级子菜单
打开(&O)…
mnuOpen
Ctrl+O
有
一级子菜单
设置(&S)
mnuSet
二级子菜单
字体(&F)…
mnuFont
Ctrl+F
有
二级子菜单
颜色(&C)…
mnuColor
有
一级子菜单
-
mnuSpbar1
一级子菜单
退出(&X)
mnuExit
F4
主菜单项
编辑(&E)
mnuEdit
一级子菜单
剪切(&T)
mnuCut
Ctrl+X
无效(灰色)
有
一级子菜单
复制(&C)
mnuCopy
Ctrl+C
无效
有
一级子菜单
粘贴(&P)
mnuPaste
Ctrl+V
无效
有
主菜单项
帮助(&H)
mnuHelp
一级子菜单
关于(&A)
mnuAbout
(2)工具栏上的快捷按钮与相应的菜单项的事件代码一致;
(3)当用户选中某菜单项或快捷按钮时进行操作时,将该操作的状态显示在状态栏左侧的窗格上。
3.设计一个图6-2所示的由一个MDI窗体和3个MDI子窗体组成的MDI应用程序界面。
图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所示的快捷菜单。
完成该程序。
图6-3
PrivateSubText1_______(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
If________Then
________mnuEdit
EndIf
EndSub
2.在一个“编辑”菜单,其中的“剪切”、“复制”菜单对象名分别为submnuCut和submnuCopy,而文本框对象名为Text1,以下程序用来对
“剪切”和“复制”菜单项的有效性进行控制。
试填充完成。
PrivateSubText1_________(ButtonAsInteger,ShiftAsInteger,_
XAsSingle,YAsSingle)
IfText1.SelLength_________Then
submnuCut.Enabled=True
submnuCopy.Enabled=True
Else
_____________________
_____________________
EndIf
EndSub
3.图6-4是一个演示MDI界面的程序。
MDI父窗体中含一个菜单:
菜单ChildForms(含有OpenChilds和CloseChilds菜单项)和Window。
执行OpenChilds将打开所有(10个)子窗体,且以不同的颜色显示其窗口背景,执行CloseChilds则关闭所有打开的子窗体;执行Window菜单下的菜单项时,按要求排列图标;当某一子窗体被激活时,该子窗体的标题显示“I'vebeenactivated!
”。
完成此程序,改正其中的错误。
图6-4
'父窗体的相关代码
DimDocumentForms(10)AsNewChildForm
PrivateSubFormsClose_Click()
DimiAsInteger
Fori=0To9
UnloadDocumentForms(i)
Next
EndSub
PrivateSubFormOpen_Click()
DimiAsInteger
Fori=0To9
DocumentForms.Show
DocumentForms.ForeColor=QBColor(Rnd*14+1)'QBColor颜色函数
DocumentForms.Caption="Document"&Format(i)
DocumentForms.Tag=i'控件的Tag属性可用来存放运行时所需的数据
Next
EndSub
PrivateSubWindowArrange_Click()
MDIForm1.ArrangevbArrangeIcons
EndSub
PrivateSubWindowCascade_Click()
MDIForm1.ArrangevbCascade
EndSub
PrivateSubWindowTileH_Click()
MDIForm1.ArrangevbTileHorizontal
EndSub
PrivateSubWindowTileV_Click()
MDIForm1.ArrangevbTileVertical
EndSub
'子窗体的相关代码
PrivateSubForm_Load()
Me.Caption="I'vebeenactivated!
"
EndSub
PrivateSubForm_LostFocus()
Me.Caption="Document"&Format(i)
EndSub
4.在名称为Form1的窗体上画两个文本框,名称分别为Text1和Text2,均无初始内容;再建立一个下拉菜单,菜单标题为“操作”,名称为M1,此菜单下含有两个菜单项,名称分别为Copy和Clear,标题分别为“复制”、“清除”,请编写适当的事件过程,使得在运行时,单击“复制”菜单项,则把Text1中的内容复制到Text2中,单击“清除”菜单项,则清除Text2中的内容(即在Text2中填入空字符串)。
运行时的窗体如图6-5所示。
要求在程序中不得使用任何变量,每个事件过程中只能写一条语句。
PrivateSubclear_Click()
图6-5
________________
EndSub
PrivateSubcopy_Click()
_________________
EndSub
6.3.2编程提示
一、编程
1.参考代码:
PrivateSubForm_Click()
LoadsndForm
sndForm.Show
UnloadMe
EndSub
2.编程要点:
(1)将用户选择操作显示在窗格上,可用以下形式:
StatusBar1.Panels
(1).Text=mnuOpen.Caption
(2)利用工具栏按钮的Index属性,将按钮的单击事件共享菜单的单击事件代码。
如:
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Index
Case1
mnuOpen_Click
…
3.窗体的排列可利用MDI父窗体的Arrange方法,在进行菜单设计时,选中“窗口”菜单项的W
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 菜单 工具栏
![提示](https://static.bdocx.com/images/bang_tan.gif)