
2.4 菜单设计
菜单是图形用户界面中的重要和通用的元素,几乎每个具有图形用户界面的程序都包含菜单,流行的图形操作系统也都支持菜单。菜单的主要作用是使程序功能层次化,而且用户在掌握了一个程序菜单的使用方法之后,可以很容易地使用其他程序的菜单。
2.4.1 菜单编辑器
建立和编辑菜单的工作是通过“菜单编辑器”来完成的。在前面板或程序框图窗口的主菜单里选择“编辑”→“运行时菜单…”,打开图2-14所示的“菜单编辑器”对话框。

图2-14 “菜单编辑器”对话框
菜单编辑器本身的菜单条有“文件”“编辑”和“帮助”3个菜单项。菜单栏下面是工具栏,在工具栏的左边有6个按钮:第1个按钮的功能是在被选中菜单项的后面插入生成一个新的菜单项;第2个按钮的功能是删除被选中的菜单项;第3个按钮的功能是把被选中的菜单项提升一级,使得被选中菜单项后面的所有同级菜单项成为被选中菜单项的子菜单项;第4个按钮的功能是把被选中菜单项降低一级,使得被选中的菜单项成为前面最接近的统计菜单项的子菜单项;第5个按钮的功能是把被选中菜单项向上移动一个位置;第6个按钮的功能是把被选中菜单项向下移动一个位置。对于第5、6个按钮的移动动作,如果该选项是一个子菜单,则所有子菜单项将随之移动。
在工具栏按钮的右侧是菜单类型下拉列表框,包括3个列表项:“默认”、“最小化”和“自定义”,它们决定了与当前VI关联的运行时菜单的类型。“默认”选项表示使用LabVIEW提供的标准默认菜单;“最小化”选项是在“默认”菜单的基础上进行简化而得到;“自定义”选项表示完全由程序员生成菜单,这样的菜单保存在扩展名为.rtm的文 件里。
工具栏的“预览”给出了当前菜单的预览;菜单结构列表框中给出了菜单的层次结构 显示。
在“菜单项属性”区域内设定被选中菜单项或者新建菜单项的各种参数。“菜单项类型”下拉列表框定义了菜单项的类型,可以是“用户项”“分隔符”和“应用程序项”三者之一。“用户项”表示用户自定义的选项,必须在程序框图中编写代码,才能响应这样的选项。每一个“用户项”菜单选项都有选项名和选项标记符两个属性,这两个属性在“菜单项名称”和“菜单项标识符”文本框中指定。“菜单项名称”作为菜单项文本出现在运行时的菜单里,“菜单项标识符”作为菜单项的标识出现在程序框图上。在“菜单项名称”文本框中输入菜单项文本时,菜单编辑器会自动地把该文本复制到“菜单项标识符”文本框中,即在默认情况下菜单选项的文本和框图表示相同。可以修改“菜单项标识符”文本框的内容,使之不同于“菜单项名称”的内容。“分隔符”选项建立菜单里的分割线,该分割线表示不同功能菜单项组合之间的分界。“应用程序项”实际上是一个子菜单,在里面包含了所有系统预定义的菜单项。可以在“应用程序项”菜单里选择单独的菜单项,也可以选中整个子菜单。类型为“应用程序项”的菜单项的“菜单项名称”“菜单项标识符”属性都不能修改,而且不需要在框图上对这些菜单项进行响应,因为它们都是已经定义好的标准动作。
“菜单项名称”和“菜单项标识符”文本框分别定义菜单项文本和菜单项标识。“菜单项名称”中出现的下画线具有特殊的意义,即在真正的菜单中,下画线将显示在“菜单项名称”文本中紧接在下画线后面的字母下面,在菜单项所在的菜单里按下这个字符,将会自动选中该菜单项。如果该菜单项是菜单栏上的最高级菜单项,则按下〈Alt+字符〉键将会选中该菜单项。例如可以自定义某个菜单项的名字为“文件(_F)”,这样在真正的菜单里显示的文本将为“文件(F)”。如果菜单项没有位于菜单栏中,则在该菜单项所在菜单里按下〈F〉键,将自动选择该菜单项。如果“文件(F)”是菜单栏中的最高级菜单项,则按下〈Alt+F〉键将打开该菜单项。所有菜单项的“菜单项标识符”必须不同,因为“菜单项标识符”是菜单项在程序框图代码中的唯一标识符。
“启用”复选框指定是否禁用菜单项,“勾选”复选框指定是否在菜单项左侧显示对号确认标记。“快捷方式”文本框中显示了为该菜单项指定的快捷键,单击该文本框之后,可以按下适当的按键,定义新的快捷键。
2.4.2 实例——自定义菜单系统
本例通过菜单编辑器窗口创建一个自定义的菜单实例。
1.设置编辑环境
1)新建VI。选择菜单栏中的“文件”→“新建VI”命令,新建一个VI,一个空白的VI包括前面板及程序框图。
2)选择“编辑”→“运行时菜单…”,打开“菜单编辑器”对话框。
3)选择菜单栏中的“文件”→“新建”命令,新建空白的菜单编辑文件,如图2-15所示,自动增加一个默认的空白用户项。

图2-15 空白的菜单编辑文件
2.编辑“文件”菜单
选择默认的空白用户项,设置“菜单项名称”为“文件(_F)”,“菜单项标识符”为“文件”。表示“文件”菜单作为菜单项时的显示出来的实际文本为“文件(F)”。
在图2-15给出的菜单中,选择菜单栏中的“编辑”→“插入用户项”命令或单击工具栏中的按钮,添加用户项。
“文件”菜单下有3项内容,需要添加子项菜单。选择菜单栏中的“编辑”→“设置为子项”命令或单击工具栏中的按钮,将用户项转化为子项。
1)第1项是“保存”菜单项,设置如下,设置结果如图2-16所示。
●“菜单项名称”为“保存(S)”。表示打开“文件”菜单后按下〈S〉键将自动选中该菜单项。
●“菜单项标识符”为“文件_保存”
● 在“快捷方式(组合键)”文本框中按〈S〉键,则〈Ctrl+S〉自动出现在文本框内,运行时该菜单项指定的组合键〈Ctrl+S〉自动出现在菜单项文本“保存(S)”的后面。

图2-16 “保存”菜单
2)第2项是一个“分隔符”。
选择菜单栏中的“编辑”→“插入分隔符”命令,添加分隔符。
3)第3项是“退出”菜单项,
●“菜单项名称”为“退出(_Q)”,表示打开“文件”菜单后,按下〈Q〉键将自动选中该菜单项。
●“菜单项标识符”为“文件_退出”。
● 在“快捷方式(组合键)”文本框中按〈Q〉键,则〈Ctrl+Q〉自动出现在文本框内,运行时该菜单项指定的组合键〈Ctrl+Q〉自动出现在菜单项文本“退出(Q)”的后面。
设置结果如图2-17所示。

图2-17 “文件”菜单
3.编辑“帮助”菜单
“帮助”菜单作为菜单项时,“菜单项名称”为“帮助(_H)”,显示出来的实际文本为“帮助(H)”,“菜单项标识符”为“帮助”,按下组合键〈Alt+H〉将自动打开该菜单。“帮助”菜单下有两项内容:
1)第1项是“帮助”:
●“菜单项名称”为“帮助(_H)”的帮助菜单项。
●“菜单项标识符”为“帮助_帮助”。
● 在“快捷方式(组合键)”文本框中按〈H〉键,则〈Ctrl+H〉自动出现在文本框内,运行时组合键〈Ctrl+H〉自动出现在菜单项文本“帮助(_H)”的后面,打开“帮助”主菜单后,按下〈H〉键将自动选中该菜单项。
2)第2项是“关于”:
●“菜单项名称”为“关于(_A)”的关于子菜单,打开“帮助”主菜单后,按下〈A〉键将自动打开该子菜单。
●“菜单项标识符”为“帮助_关于”。
“关于”子菜单下有“程序”和“更新”两个菜单项。“程序”菜单项的“作者”两个菜单项。“程序”菜单项的“菜单项名称”为“程序”,“菜单项标识符”为“帮助_关于_程序”;“更新”菜单项的“菜单项名称”为“更新”,“菜单项标识符”为“帮助_关于_更新”。
可以看到,菜单项的“菜单标识符”是按层次进行组织的。可以在程序框图中对定义的菜单进行编程。
选择菜单栏中的“文件”→“另存为”命令,保存创建的自定义菜单为“自定义”,如图2-18所示。

图2-18 自定义菜单
2.4.3 “菜单”函数
在函数选板中选择“编程”→“对话框与用户界面”→“菜单”子选板,如图2-19所示,菜单子选板中包含了所有对菜单进行操作的函数,用于修改LabVIEW应用程序中的菜单。
用户可以根据需要进行选用。关于这些节点的详细使用方法,请参考LabVIEW自带的帮助文件。

图2-19 “菜单”子选板
下面介绍“菜单”子选板中的具体菜单函数。
●“插入菜单项”:在菜单或子菜单中插入项名称或项标识符指定的菜单项。
●“当前VI菜单栏”:返回当前VI的菜单引用引用句柄。
●“获取菜单项信息”:返回菜单项或菜单栏的属性。
●“获取快捷菜单信息”:返回可通过快捷键访问的菜单项。
●“获取所选菜单项”:返回最后选中的菜单项的项标签,等待毫秒超时接线端指定的时间,以毫秒为单位。
●“启用菜单跟踪”:启用或禁用菜单项选择的跟踪。
●“删除菜单项”:删除菜单或子菜单中的菜单项。
●“设置菜单项信息”:设置菜单项或菜单栏的属性。