1、第七章 菜单的设计与多文档界面7.1 菜单简介大多数 Windows 应用程序都有一个菜单栏,它总是处在窗体标题栏的下面,并包含一个或多个菜单标题。单击每个菜单标题都会弹出一个下拉菜单,在下拉菜单中包含有菜单项、分隔条和子菜单标题。有的菜单项可以直接执行,有的菜单项执行时则会弹出一个对话框。所有的 Windows应用程序都遵循以下 3 个约定:凡是菜单名称后有一个省略号的,均表示在单击该选项后会弹出一个相应的对话框,在用户作出相应的回答后,该项功能就以用户所给予的信息去执行。例如,单击【打开】选项,则弹出【打开】对话框,用户可从中选择要打开的文件。凡是菜单名称后有一个小三角的,则表示它是一个子
2、菜单标题,子菜单标题并不能直接执行,仅仅扮演一个“容器” 的角色。当鼠标指针移动到子菜单标题上时,会自动弹出子菜单。例如,将指针移动到【发送】选项,就会弹出子菜单。菜单名称后不包含 L 述两种符号者,表明该菜单项所代表的命令可直接执行。例如,单击【关闭】选项,则将关闭当前打开的文档。另外,有的菜单项名称后还显示相应的键盘访问键和快捷键。访问键允许同时按下 Alt键和一个指定字符来打开一个菜单。一旦菜单打开,通过按下访问键即可选取菜单项。在菜单项的标题中,访问键表现为一个带下划线的字母,如【打开】命令的访问键为 0.当打开【文件】菜单后,按下 0 键即可执行【打开】命令。快捷键出现在相应菜单项的
3、右边,例如,【打开】命令的快捷键是 Ctrl+O,无论【文件】菜单是否打开,只要按下 Ctrl+O 组合键,即可执行【打开】命令。由于所有 Windows 应用程序都遵循上述约定,因此,在创建菜单时,也应该遵循这些约定。例如,如果某菜单项的执行结果是弹出一个对话框,则应该在该菜单项后加上省略符().此外,要使应用程序简单好用,还应该将菜单项按其功能分组。例如,与文件有关的命令【新建】、【打开】和【另存为】都列入了【文件】菜单。同一菜单中不同类型的选项之间还使用分隔条分隔开来。分隔条作为菜单项间的一个水平行显示在菜单上。在包含较多菜单项的菜单上,经常使用分隔条将各项划分成一些逻辑组。【文件】菜单
4、,使用分隔条将其菜单项分成 6 组。7.2 菜单编辑器简介菜单编辑器是 VB 提供的一个用于设计菜单的工具,它使看似复杂的菜单创建变得非常简单。使用菜单编辑器可以创建出新的菜单或编辑已有的菜单。打开【工具】菜单,执行【菜单编辑器】命令,将出现如图 7.3 所示的【菜单编辑器】对话框。也可以通过单击工具栏上的【菜单编辑器】按钮来打开该对话框。其中各主要选项的含义如下:标题:该文本框用来输入菜单名,这些名字出现在菜单栏或菜单之中。如果想在菜单中建立分隔条,则应在该文本框中输入一个连字符“一”.为了能够通过键盘访问菜单项,可在一个字母前插入如果其值为 True,则取消文本的粗体效果,并设置其值为 F
5、alse.在 MenSize_Click 事件过程中,每个菜单项响应 Click 事件后都将执行三步操作:首先设置文本的字号;其次是将它自身 Checked 属性的值设置为 True,即在菜单项上显示“”标记;最后是将其他菜单控件的 Checked 属性的值设置为 False,即取消其他菜单项 r.的“”标一记。运行修改后的程序,执行【文件】菜单中的【新建】命令,然后在文本框中输入一段文本,执行【编辑】菜单中,的【粗体】命令,则该命令的左边出现了一个“”标记,同时,文本字体变为粗体。再次单击【粗体】选项,则“” 标记消失,文本恢复标准显示。单击【字号】子菜单中的【三号】选项,则该选项的左边出现
6、了一个“”标记,并且文本字号变为三号。7.4.3 菜单项的隐藏与显示在一些应用程序中有些菜单项是隐藏的,只有当满足一定条件时,这些菜单项才会显示出来。菜单控件的 Visible 属性用来决定菜单项是否显示。该属性的默认值为 True 即菜单项总是显示出来的。如果设置它的值为 False,则菜单项将不显示出来。【菜单编辑器】对话框中的【可见】选项对应的是 Visible 属性,取消对该选项的选中与在【属性】窗口中设置Visible 属性的值为 False 的效果是一样的 4。实例 7.5 菜单项的隐藏与显示。修改实例 7.4,使得只有在字体为粗体时,【字号】子菜单才显示出来。单击【属性】窗口上方
7、的对象列表框,从中选择菜单控件 MenMsize,在属性列表中将Visible 属性的值设置为 False。打开【代码】窗口,修改 MenFont_Click 事件过程如下:Private Sub MenFont_Click()If MenFont.Checked=False ThenTextl.FontBold=TrueMenFont.Checked=TrueMenMsize.Visible=TrueElseTexl.l.FontBold=FalseMenFont.Checked=FalseMenMsize.Visible=FalseEnd IfEnd Sub运行修改后的程序,单击【编辑】菜
8、单,可见在下拉菜单中没有出现【字号】子菜单,如图 7.23 所示。单击【黑休 l 选项,则【字号】子菜单又显示出来,如图 7.24 所示。7.5 快捷菜单在 Windows 应用程序中,除了菜单栏以外,还存在着另外一种形式菜单-快捷菜单。快捷菜单是一种独立于菜单栏而显示在窗体上的浮动菜单。在不同的对象上单击鼠标右键,弹出的快捷菜单中的命令也是不同的。快捷菜单总是提供与当前指针所指对象相关的操作命令。例如,将鼠标指针移动到 VB 的工具箱上,单击右键,则弹出快捷菜单,通过该快捷菜单中的命令,用户可以方便地执行对工具箱的有关操作。为应用程序建立快捷菜单,会使程序的操作更方便快捷。快捷菜单也是通过菜
9、单编辑器创建的,并且创建的方法与创建普通菜单相同。下面给出一个创建快捷菜单的实例。实例 7.6 创建快捷菜单。该程序的目的是,在窗体上单击右键,则弹出一个快捷菜单“背景色”,通过它可以设置窗体的背景颜色,如图 7.27 所示。在【确定】按钮上单击右键,也可以弹出一个快捷菜单,通过它可以设置按钮的颜色以及字体,如图 7.27 所示。首先,使用菜单编辑器创建这两个快捷菜单。按照创建普通菜单的方法创建两个菜单,标题分别是“按钮” 和“ 窗体。其中各菜单控件的属性设置如表 7.5 所示。这不再逐步介绍菜单的创建方法,只指出几个需要注意的地方。(1)在快捷菜单中并不显示菜单标题,因此,菜单标题可以自由设
10、定。(2)快捷菜单不出现在菜单栏中,因此,需要将菜单标题的 Visible(可见)属性的值设置为 False(取消对【可见】复选框的选中).接下来设计一个窗体,在该窗体中使用已经创建的快捷菜单。在窗体上放置一个按钮控件和一个通用对话框控件。其中各对象的属性设置如表 7.6 所示。打开【代码】窗口,编写按钮的 MouseUp 事件过程如下:Private Sub Com_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=2 ThenPopupMenu PopcomEnd IfEnd Sub由于
11、快捷菜单是在单击右键时弹出的,因此,在该段代码中使用了一个 If 语句来判断用户所单击的键,如果单击的是右键(Button 参数的值为 2),则使用窗体的 PopupMenu 方法显示快捷菜单。PopupMenu 方法的一般格式是:窗体名.PopupMenu 菜单名,Flags ,x,y,BoldCommand .PopupMenu 方法有 5 个参数,其中参数“菜单名”是必须的,而其他参数是可选的。“菜单名”是指菜单标题的名称。例如,己创建的两个快捷菜单的菜单名分别是 PopCom 与PopForm.其中参数 x 和 y 分别用来指定快捷菜单出现位置的横坐标与纵坐标,并且基准点由 Flags
12、 参数指定。如果省略,则快捷菜单就显示在鼠标指针当前的位置。参数 Flags 用来定义快捷菜单的基准点与操作方法,分别如表 7.7 与表 7.8 所示。Flags 参数的取值也可以是上述两组取值的相加(每组只能取一个).例如。Flags=6 ,则表明它同时具有 Flags=4 与 Flags=2 的特征。这一点与在前面学习的其他方法的 Flags 参数是相同的。参数 BoldCommand 的作用是指定在快捷菜单中以粗体显示的菜单项的名称。一个快捷菜单中只能有一个菜单项以粗体显示。同样,编写窗体的 MoussUp 事件过程如下:Private Sub From_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=2 ThenPopupMenu PopFromEnd If