《第10章 菜单、工具栏和状态栏课件.ppt》由会员分享,可在线阅读,更多相关《第10章 菜单、工具栏和状态栏课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、10.1 菜单的应用菜单的应用第第10章章 菜单、工具栏和状态栏菜单、工具栏和状态栏 退出退出10.2工具栏和状态栏工具栏和状态栏 10.1 菜单的应用菜单的应用在窗口环境下,绝大多数应用程序使用菜单界面进行各种操作。菜单在窗口环境下,绝大多数应用程序使用菜单界面进行各种操作。菜单提供了人机对话界面,方便使用者选择应用系统的各种功能。另外,提供了人机对话界面,方便使用者选择应用系统的各种功能。另外,通过菜单可以管理应用系统,控制应用程序各种功能模块的运行。通过菜单可以管理应用系统,控制应用程序各种功能模块的运行。菜单可分为下拉式菜单和弹出式菜单两种基本类型。菜单可分为下拉式菜单和弹出式菜单两种
2、基本类型。在在 VB 中,菜单控件也是一个对象,具有定义它的外观中,菜单控件也是一个对象,具有定义它的外观与行为的属性。菜单控件只包含一个事件,即单击事件。与行为的属性。菜单控件只包含一个事件,即单击事件。 菜单标题 菜单栏 主菜单名 菜单项 快捷键 对话框标记 分隔条 子菜单名 工作区 热键 图图10-1 下拉式菜单的组成下拉式菜单的组成10.1.1 下拉式菜单下拉式菜单图图10-2 菜单编辑器菜单编辑器从菜单编器器窗口可知,菜单编器器窗口分为三个部分,从菜单编器器窗口可知,菜单编器器窗口分为三个部分,即属性区、编辑区和列表框。即属性区、编辑区和列表框。1.属性区属性区属性区为窗口标题栏下面
3、的属性区为窗口标题栏下面的 5 行,用来输入或修改菜单项,行,用来输入或修改菜单项,设置属性。其中的主要项目的作用见表设置属性。其中的主要项目的作用见表 10-1 。表表 10-1 菜单控件的主要菜单控件的主要性性属性属性说说 明明标题标题相当于控件的说明属性,这些名字出现在菜单条或菜单之中。分隔符条的标题为一个连字符相当于控件的说明属性,这些名字出现在菜单条或菜单之中。分隔符条的标题为一个连字符 (-) 。名称名称为菜单项的标识符,相当于控件的名字属性,仅用于访问代码中的菜单项,不会出现在菜单中为菜单项的标识符,相当于控件的名字属性,仅用于访问代码中的菜单项,不会出现在菜单中索引索引设置菜单
4、控件数组的下标。相当于控件数组的索引属性设置菜单控件数组的下标。相当于控件数组的索引属性快捷键快捷键允许为每个命令选定快捷键,即通过键盘来选择某个菜单项允许为每个命令选定快捷键,即通过键盘来选择某个菜单项复选复选当当 复选复选 属性设置为属性设置为True 时,在相应的菜单项旁加上时,在相应的菜单项旁加上 以表明该菜单项处于活动状态以表明该菜单项处于活动状态有效有效用来设置菜单项的操作状态,当该属性设置为用来设置菜单项的操作状态,当该属性设置为False时,相应的菜单项呈灰色,表明不会相应时,相应的菜单项呈灰色,表明不会相应用户事件用户事件可见可见设置该菜单项是否可见。不可见的菜单项时不能被执
5、行的设置该菜单项是否可见。不可见的菜单项时不能被执行的协调位置协调位置NegotiatePosition 属性决定是否及如何在容器窗体中显示菜单属性决定是否及如何在容器窗体中显示菜单“显示窗口列表显示窗口列表”在在 MDI 应用程序中,确定菜单控件是否包含一个打开的应用程序中,确定菜单控件是否包含一个打开的 MDI 子窗体列表子窗体列表编辑区由编辑区由 7 个按钮组成,单击右箭头将把选定的菜单个按钮组成,单击右箭头将把选定的菜单向右移一个等级。单击左箭头将把选定的菜单向上移向右移一个等级。单击左箭头将把选定的菜单向上移一个等级。单击上箭头将把选定的菜单项在同级菜单一个等级。单击上箭头将把选定的
6、菜单项在同级菜单内向上移动一个位置。单击下箭头把选定的菜单项在内向上移动一个位置。单击下箭头把选定的菜单项在同级菜单内向下移动一个位置。单击同级菜单内向下移动一个位置。单击“下一个下一个”按钮按钮将开始一个新的菜单项。单击将开始一个新的菜单项。单击“插入插入”按钮将在某个按钮将在某个菜单项前插入一个新的同级空白菜单项。单击菜单项前插入一个新的同级空白菜单项。单击“删除删除”按钮将删除选定的菜单项。按钮将删除选定的菜单项。2.编辑区编辑区3. 列表框列表框菜单项列表框为菜单编辑器最下面的列表框,该列表框显菜单项列表框为菜单编辑器最下面的列表框,该列表框显示菜单项的分级列表。将子菜单项缩进以指出它
7、们的分级示菜单项的分级列表。将子菜单项缩进以指出它们的分级位置或等级。参见图位置或等级。参见图 10-3 。图10-3 菜单编辑器在使用在使用Word应用程序时经常会发现,某些菜单项会呈灰色显示,此应用程序时经常会发现,某些菜单项会呈灰色显示,此时单击该次菜单项没有任何反映,有时菜单项的标题会发生改变。这时单击该次菜单项没有任何反映,有时菜单项的标题会发生改变。这些都可以通过在菜单设计和程序代码中加以控制。些都可以通过在菜单设计和程序代码中加以控制。(1)有效性控制)有效性控制一个菜单项是否正常显示,即该菜单项是否一个菜单项是否正常显示,即该菜单项是否“有效有效”,是由该菜单项,是由该菜单项的
8、的“有效有效”属性来控制的。只有该属性设置为属性来控制的。只有该属性设置为True时,单击该菜单项时,单击该菜单项才会执行相应的操作。可以在设计时设置该属性值(选中图才会执行相应的操作。可以在设计时设置该属性值(选中图10-3中的中的“有效有效”复选框),也可以在运行时通过执行代码加以改变。复选框),也可以在运行时通过执行代码加以改变。(2)可见性控制)可见性控制只有将菜单项的只有将菜单项的Visible属性设置为属性设置为True,该菜单项才显示。可以在设该菜单项才显示。可以在设计时设置该属性值(选中图计时设置该属性值(选中图10-3中的中的“可见可见”复选框),也可以在运复选框),也可以在
9、运行时通过执行代码加以改变。行时通过执行代码加以改变。(3)菜单项标记)菜单项标记菜单项标记就是在菜单项左边加上标记菜单项标记就是在菜单项左边加上标记 表明该菜单项处于选择状表明该菜单项处于选择状态。设计时该属性可以由菜单编辑器中的态。设计时该属性可以由菜单编辑器中的“复选复选”(Checked)属属性设置,也可以在属性窗口的性设置,也可以在属性窗口的“Checked”栏内设置。通常情况下,栏内设置。通常情况下,该属性时在程序运行时动态地进行设置的。该属性时在程序运行时动态地进行设置的。4. 快捷键和访问键快捷键和访问键v 访问键是标题中带下划线的字符,如在标题中输入访问键是标题中带下划线的字
10、符,如在标题中输入“文件文件(&F)”,则在程序运行时,则在程序运行时F便是带下划线的字便是带下划线的字符,按符,按Alt+F组合键便可以打开组合键便可以打开“文件文件”菜单。需要菜单。需要指出的是,菜单中不能使用重复的访问键。如果多个指出的是,菜单中不能使用重复的访问键。如果多个菜单项使用同一个访问键,那么该键将不起作用。菜单项使用同一个访问键,那么该键将不起作用。v 创建快捷键的方法是先选取要定义快捷键的菜单项,创建快捷键的方法是先选取要定义快捷键的菜单项,然后从然后从“快捷键快捷键”组合框中选取一个组合键。如果要组合框中选取一个组合键。如果要删除菜单项的快捷键,则从删除菜单项的快捷键,则
11、从“快捷键快捷键”组合框中选取组合框中选取顶部的顶部的“(none)”项,如图项,如图10.4所示。所示。图图10.4 10.4 添加快捷键和访问键的过程添加快捷键和访问键的过程任何复杂的菜单程序都遵循相同的设计方法,下面通过任何复杂的菜单程序都遵循相同的设计方法,下面通过一个实例来说明编写菜单程序的过程。一个实例来说明编写菜单程序的过程。例例 10-1 :某电脑销售公司销售系统界面见图:某电脑销售公司销售系统界面见图10-4,部分,部分菜单的内容见表菜单的内容见表 10-1 。试按表。试按表 10-2 设计菜单。设计菜单。 1)用菜单编辑器建立菜单的实例)用菜单编辑器建立菜单的实例图图10-
12、4 应用程序界面应用程序界面表表 10-2 菜单结构菜单结构标题标题名称名称上级菜单标题上级菜单标题热键热键快捷键快捷键有无对话框有无对话框用户用户MUser无无F无无新建新建MNew用户用户NCtrl+N有有打开打开MOpen用户用户OCtrl+O有有-MSeg1用户用户无无无无无无保存保存MSave用户用户SCtrl+S无无另存为另存为MSaveother用户用户A有有 -MSeg2用户用户无无无无无无配置预览配置预览MPreview用户用户R无无有有打印打印MPrint用户用户P有有-MSeg3用户用户无无无无无无退出退出MExit用户用户E无无编辑编辑MEdit无无E无无部件部件MPa
13、rt无无P无无工具工具MTool无无T无无无无帮助帮助MHelp无无H无无1.菜单结构设计步骤菜单结构设计步骤(1)打开需要设计菜单的窗)打开需要设计菜单的窗(2)打开菜单编辑器对话框口。)打开菜单编辑器对话框口。 (3)在图)在图10-3所示的菜单编辑器对话框的所示的菜单编辑器对话框的“标题标题”栏栏输入输入“用户用户&F”(&F表示热键为表示热键为F),此时在菜单项),此时在菜单项显示区出现键入的内容,在显示区出现键入的内容,在“名称名称”栏内输入栏内输入“MUser”,在,在“快捷键快捷键”下拉框内选择下拉框内选择“None”。 (4)单击)单击“下一个下一个”按钮,菜单项显示区的条形光
14、标按钮,菜单项显示区的条形光标下移,同时,菜单编辑器数据区清空。在下移,同时,菜单编辑器数据区清空。在“标题标题”栏栏输入输入“新建新建&N”,此时在菜单项显示区出现键入的,此时在菜单项显示区出现键入的内容,在内容,在“名称名称”栏内输入栏内输入“MNew”,在,在“快捷键快捷键”下拉框内选择下拉框内选择“Ctrl+N”。 (5)单击编辑区的右箭头在菜单项显示区的)单击编辑区的右箭头在菜单项显示区的“新建新建&N”左边出现符号左边出现符号“.”,表明,表明“新建新建”是是“用户用户”的的下一级子菜单。下一级子菜单。 (6)仿照上面的步骤,建立所有菜单项,注意各菜单)仿照上面的步骤,建立所有菜单
15、项,注意各菜单之间的关系用右箭头和左箭头按钮进行调整。之间的关系用右箭头和左箭头按钮进行调整。, 2.编写程序代码编写程序代码设计好菜单后,需要编写菜单项的设计好菜单后,需要编写菜单项的Click事件过程。事件过程。Private Sub dakai_Click(Index As Integer) Dim sFile As String Label1.Visible=False 隐藏隐藏Label1控件(即显示控件(即显示“欢迎欢迎”字样的字样的的控件)的控件) On Error GoTo nofile 设置错误陷阱设置错误陷阱 With CommonDialog1 CommonDialog1
16、为添加的通用对话框控为添加的通用对话框控件件 .DialogTitle = 打开打开 .CancelError = False .InitDir = d: .Filter = 文本文件文本文件 |*.Txt .ShowOpen 显示显示“打开打开”对话框对话框 If Len(.FileName) = 0 Then Exit Sub End If sFile = .FileName End Withnofile: 错误处理错误处理 If Err.Number = 32755 Then Exit Sub End If 添加处理打开的文件的代码添加处理打开的文件的代码End Sub2)菜单项的增减)
17、菜单项的增减1.增加菜单项增加菜单项菜单项的增减是通过菜单控件数组实现的。菜单控件数组和普通数菜单项的增减是通过菜单控件数组实现的。菜单控件数组和普通数组一样,是通过下标来访问数组中的元素(这里为菜单项)的。菜单组一样,是通过下标来访问数组中的元素(这里为菜单项)的。菜单控件数组可以设计时建立,也可以在运行时建立。控件数组可以设计时建立,也可以在运行时建立。例例10-3:在例:在例10-2中,要求在程序运行时,在中,要求在程序运行时,在“文件文件”菜单的菜单的“退退出出”菜单项之上保留最近打开的文件清单。增加一个菜单项之上保留最近打开的文件清单。增加一个“清除清除”菜单项,菜单项,当单击该菜单
18、项时,将清除所有文件清单。当单击该菜单项时,将清除所有文件清单。(1)打开如图)打开如图10-8所示的菜单编辑器,单击菜单列表区中的所示的菜单编辑器,单击菜单列表区中的“退退出出”项。项。(2)单击)单击“插入插入”按钮,清除数据区的内容。按钮,清除数据区的内容。(3)在)在“标题标题”栏输入栏输入“文件清单文件清单”,在,在“名称名称”栏内输入栏内输入“MdocuName”(菜单名称),输入菜单名称),输入“索引索引”值值0以使以使“MdocuName”菜单项成为菜单控件数组,设置菜单项成为菜单控件数组,设置“可见可见”属性为属性为False。(4)在在“退出退出”菜单项前新增一个分隔符号,
19、设置菜单项前新增一个分隔符号,设置“可见可见”属性属性为为False。(5)在在“退出退出”菜单项前新增一个标题为菜单项前新增一个标题为“清除清除”、名称为、名称为Clear的菜单项,设置的菜单项,设置“有效有效”属性为属性为False。(6)在窗体层定义变量在窗体层定义变量menucounter控制菜单控件数组的下标。控制菜单控件数组的下标。Dim menucounter As Integer(7)在)在“新建新建”和和“打开打开”菜单项的菜单项的Click事件过程中加上如下代码:事件过程中加上如下代码: menucounter = menucounter + 1 If menucounte
20、r 0 Then 当当“MdocuName”菜单项不为空菜单项不为空时,时,“清除清除”菜单项有效菜单项有效 Clear.Enabled = True Else Clear.Enabled = False End If 图图10-5 初始菜单初始菜单 图图10-6 打开文件后的菜单打开文件后的菜单图图10-5为为“MdocuName”菜单项为空的情况(即没有一个菜单项为空的情况(即没有一个文件打开),图文件打开),图10-6为打开了四个文件后的情况。为打开了四个文件后的情况。2.删除菜单项删除菜单项在运行时用在运行时用load语句增加的菜单项可以使用语句增加的菜单项可以使用Unload语句语句
21、删除,但不能删除设计时建立的菜单项。如单击删除,但不能删除设计时建立的菜单项。如单击“用户用户 | 清除清除”菜单项时,删除所有打开的文件清单,可以编写如菜单项时,删除所有打开的文件清单,可以编写如下代码:下代码:Private Sub Clear_Click() For i = 0 To menucounter - 1 Unload Mdocumenu(menucounter - i) Next MSeg14.Visible = False 删除不必要的分隔线删除不必要的分隔线End Sub 10.1.2 弹出菜单弹出菜单 弹出菜单是独立于菜单栏的浮动菜单,其在窗体上的显示位置由弹出菜单是独
22、立于菜单栏的浮动菜单,其在窗体上的显示位置由单击鼠标时指针的位置决定。单击鼠标时指针的位置决定。在在VB中,使用中,使用PopupMenu方法来显示弹出菜单。方法来显示弹出菜单。PopupMenu方方法的语法为:法的语法为:对象对象. PopupMenu 菜单名,标志,菜单名,标志,x,y表表10-3用于用于“标志标志 ” 的设置值的设置值常数位置常数位置值值描述描述vbPopupMenuLeftAlign 0缺省值。弹出式菜单的左边定位于缺省值。弹出式菜单的左边定位于 x。vbPopupMenuCenterAlign 4弹出式菜单以弹出式菜单以 x为居中心。为居中心。vbPopupMenuR
23、ightAlign 8弹出式菜单的右边定位于弹出式菜单的右边定位于 x。常数行为常数行为值值描述描述vbPopupMenuLeftButton 0缺省值。缺省值。 仅当使用鼠标左按钮时,仅当使用鼠标左按钮时, 弹出式菜弹出式菜单中的项目才响应鼠标单击。单中的项目才响应鼠标单击。vbPopupMenuRightButton 2不论使用鼠标右按钮还是左按钮,不论使用鼠标右按钮还是左按钮, 弹出式菜弹出式菜单中的项目都响应鼠标单击。单中的项目都响应鼠标单击。在例在例10-1中,当在中,当在Form1窗体上单击鼠标右键时,要求窗体上单击鼠标右键时,要求在光标处弹出在光标处弹出“用户用户”菜单,需要添加
24、的代码为:菜单,需要添加的代码为:Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu MUser, vbPopupMenuCenterAlignEnd SubPopupMenu可以适用于所有的菜单项,如有下列事件代码:可以适用于所有的菜单项,如有下列事件代码:Private Sub ListCPU_MouseDown(Button As Integer, Shift As Integer, X As Singl
25、e, Y As Single) If Button = 2 Then PopupMenu MParta, vbPopupMenuCenterAlignEnd Sub当鼠标右键单击当鼠标右键单击ListCPU控件(为一个列表框控件,用控件(为一个列表框控件,用于选择于选择CPU配件)时,弹出配件)时,弹出“主要部件主要部件”子菜单,以便子菜单,以便选择其他主要部件(打开其他配件的列表框)。选择其他主要部件(打开其他配件的列表框)。MParta为主要部件子菜单的名称。为主要部件子菜单的名称。 10.2 工具栏和状态栏工具栏和状态栏v 在在Visual Basic环境中,提供两个环境中,提供两个Ac
26、tiveX控件控件Toolbar(工具栏控件工具栏控件)和和StatusBar(状态栏控件状态栏控件),利用,利用这两个控件便能够方便快捷地制作出工具栏和状态栏。这两个控件便能够方便快捷地制作出工具栏和状态栏。v 由于由于ActiveX控件通常不包含在标准控件中,所以使用前控件通常不包含在标准控件中,所以使用前应首先将其添加进标准控件工具箱。在应首先将其添加进标准控件工具箱。在“工程工程”菜单中执行菜单中执行“部件部件”命令后弹出命令后弹出“部件部件”对话框。选择其中的对话框。选择其中的Microsoft Windows Common Controls 6.0后单击后单击“确定确定”按钮。此时
27、将在标准控件工具箱中添加按钮。此时将在标准控件工具箱中添加9个控件,个控件,其中就包含工具栏控件和状态栏控件,如图其中就包含工具栏控件和状态栏控件,如图10.7所示。所示。图图10.7(a) 10.7(a) 工具栏控件工具栏控件图图10.7(b) 10.7(b) 状态栏控件状态栏控件10.2.1 工具栏工具栏 v 在窗体中加人工具栏控件的方法同其他控件一样,只是当它被加在窗体中加人工具栏控件的方法同其他控件一样,只是当它被加入时默认地出现在窗体的顶端。可以在属性窗口中通过修改工具入时默认地出现在窗体的顶端。可以在属性窗口中通过修改工具栏控件的栏控件的A1ign属性来设置它在窗体中的位置,如表属
28、性来设置它在窗体中的位置,如表10.4所示。所示。表表10.4 工具栏的工具栏的Align属性属性设置值设置值 常数常数说明说明0vbAlignNone可以在设计时或编制程序中确定大小和位置。如果对象在可以在设计时或编制程序中确定大小和位置。如果对象在MDI窗体上,该值被忽略窗体上,该值被忽略1vbAlignTop对象显示在窗体的顶部对象显示在窗体的顶部2vbAlignBotton对象显示在窗体的底部对象显示在窗体的底部3vbAlignLeft对象显示在窗体的左边对象显示在窗体的左边4vbAlignRight对象显示在窗体的右边对象显示在窗体的右边例例10.2 程序添加一个工具栏,工具栏中有程
29、序添加一个工具栏,工具栏中有3个按钮,可以改变个按钮,可以改变文本框中的字体是否为文本框中的字体是否为“粗体粗体”、“斜体斜体”、“下划线下划线”。如图。如图10.8所示。所示。 图图10.8 10.8 工具栏的运行过程工具栏的运行过程10.2.2 状态栏状态栏v 使用状态栏控件和使用工具栏控件一样,首先需要在工具箱中添使用状态栏控件和使用工具栏控件一样,首先需要在工具箱中添加加ActiveX控控Microsoft Windows Common Controls 6.0。在窗体中添加状态栏控件,状态栏控件一般位于窗体的下。在窗体中添加状态栏控件,状态栏控件一般位于窗体的下方,如图方,如图10.
30、 9所示。所示。图图10.9 10.9 在窗体中添加状态栏在窗体中添加状态栏表表10.5 状态栏的状态栏的Style属性属性Style值值说明说明SbrText-0显示文本和位图显示文本和位图SbrCaps-1显示大小写控件键的状态显示大小写控件键的状态SbrNum-2显示数字控制键的状态显示数字控制键的状态Sbrlns-3显示插入键的状态显示插入键的状态SbrDate-4显示当前日期显示当前日期SbrTime-5显示当前时间显示当前时间例例10.3 为程序添加一个状态栏,显示当前文本的字体大小和字体颜色,为程序添加一个状态栏,显示当前文本的字体大小和字体颜色,如图如图10.10所示所示 图图10.10 10.10 状态栏的运行过程状态栏的运行过程