规范设计Windows应用软件菜单

    技术2022-05-11  79

    在开发软件的菜单界面时,能按Windows所设定的规范进行,不仅能使所开 发出的应用软件的菜单界面更美观丰富,而且能与Windows中各软件协调一致, 使大量熟悉Windows操作的用户,一看菜单,就能根据平时的使用经验,触类旁通 地知晓该应用软件的各功能和简捷的操作方法,增强软件的灵活性和可操作 性。 以下以VB5.0的工具菜单栏(Tools)中的“菜单编辑器”和一个“学生档 案管理软件”(主要有“文件”、“系统初始化” 、“年级”、“输入与查 询”等菜单,分别完成报表打印、新建年级库、选年级、以及数据库数据的输 入与查询等)为例,说明Windows应用软件菜单设计的一些规则: 一、暂时不可操作的菜单命令项一般要屏蔽变灰 Windows菜单中有一些菜单项是以变灰的形式出现的,并用虚线字符来显 示,这一类的命令表示当前不可用,也就是说,执行此命令的条件当前还不具 备。例如,在学生档案管理软件中,初始的“输入与查询”菜单为灰,因为在 没有选中“年级”的情况下,系统将不知要查询哪个年级的学生资料。在图1 中设计时,点击“输入与查询”菜单条的“有效(E)”属性,改变其默认的 “有效”为“无效”,然后设计在“年级”菜单中各年级的Click事件中传递 所选中的年级信息给“输入与查询”模块后改变后者的“有效”属性值,让其 可操作: Private Sub mnu98dz_Click() Transfer = "c:/dagl/98dz.mdb" mnuFind.Enabled = True End Sub 二、正在起作用的菜单命令旁打上选中标记(√) Windows中有一些命令是触发式的,打勾号表明该命令正在起作用,否则 表明不起作用,可通过点击,反复切换。例如,在上述所举的学生档案管理软 件中,当选择了某一年级时,系统就在对应年级菜单前打上“√”,表明正在 操作的是此年级的数据库。要做到这一点,只要把菜单编辑器中相应菜单条的 “复选(C)"框选中即可,然后在菜单的驱动事件加入如下语句来切换该属性: mnu98dz.Checked=not mnu98dz.Checked 三、为命令选项设置访问键(Access key) 菜单项中带有下划线的字母,称为该命令的访问键,是为了方便使用键盘 的用户而设置的,按Alt键和该字母时即可打开该菜单,增加访问键只要在菜 单编辑器的“标题(P)”框中,在要让其成为访问键的字母前加“&”即可, 当然,访问键最好不要重复,否则系统只认定第一个有效。 四、为命令选项增加快捷键(Shortcut Key) 某些菜单命令的右边有一组合键,称为该命令的快捷键,可以不打开菜单 而直接按快捷键来选择执行此命令。为一个命令项增加一个快捷键,可在菜单 编辑器中的“快捷键(S)”列表框中为该命令项分配一个,列表中一个快捷 键只能被分配一次,否则系统会拒绝接受。 五、在要弹出对话框的命令选项后增加省略号(...)提示用户 Windows中,如果命令项后面有省略号(...),表明选择此命令将引出一 个对话框,从对话框系统要求用户提供更多执行该命令所需的信息,在设计时 只要在会引出对话框的菜单项的标题后增加“(...)"提示即可。 六、用右指向的箭头(→),来指引用户选择此项将引出级联菜单 (Cascading Menu) 级联菜单即所谓的子菜单,在VB中箭头由系统根据菜单编辑器中设计菜单 大纲时所安排的“缩进”度而自动实现的,因此,关键是在设计菜单时合理安 排大纲中各菜单项上下级的逻辑关系,在VB中最多 可以有四级子菜单。 七、对相关的命令用分隔条(Separate Bar)进行分组 为了让用户迅速地在菜单中找到他要执行的命令项,有必要对菜单中相关 的一组命令用分隔条进行 分组,如文件菜单中,把有关打印输出的一组 命令:“页面设置”、“打印预览”、“打印”等用分隔条醒目地进行分隔。 这只要在需要进行分组的命令之间插入一个特殊的命令条,该命令条的“标 题”为“-”,而“名称”任意,因为在程序中一般不会引用此命令的名称。 八、建立动态菜单,提高软件的灵活性 动态菜单即运行时会伸缩的菜单,Windows中有许多软件的“文件”菜单 中都具有记忆最近操作过的几个文档名的功能,在本文所举例的学生档案管理 软件中,因为每年都会有新的学生到校,在形成新的年级时,要在“年级”菜 单中动态地增加新的年级名称以供选择和查询,这首先要在设计时生成菜单命 令的控件数组(Menu Control Array),在菜单的编辑器中加入一个菜单选项, 设其Index属性设置为0,然后可以加入名称相同(在本例中名称为MnuNj), Index值相邻递增的菜单选项(比如加入10个),设计时让它们标题框均为空留 作日后引用新年级名,并设这些备用菜单条的“可见”属性为无效4目前不可 见。在有建立和删年级库功能的“系统初始化”菜单驱动事件中引 用这个数组名和索引值在“输入与查询”中动态地加进新的年级名选项,并且 让可见或不可见(在删除时): Private AddMenu_Click() Counter=counter+1 Nj=Nj+1 'Nj是一个模块级变量,初值为1998 MnuNj(counter).Caption= Nj & "年级" MnuNj(counter).Visible=Ture End Sub Windows中许多应用程序的“文件"菜单记住最近使使过的文件名的实际方 法与此类似。 九、生成弹出式菜单,增强软件的可操作性 有时为了方便用户需要,为一些最常用的命令建立右键弹出式快捷菜单, 这种菜单的前期设计和普 通菜单一样,不同的是一般要先点击“可见 (P)”框,让此菜单不可见,然后在窗体的MouseDown或 MouseUp事件中引 用PopupMenu方法来实现在窗体上按下鼠标右键时弹出此菜单: Private Sub MdiForm1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If button=2 the Popupmenu MnuEdit 'MnuEdit为制作的要弹出的菜单 End Sub PopupMenu方法将忽略初始设置的“不可见”属性。 使用Windows下的其他软件开发工具设计菜单时,情形与之类似。

    最新回复(0)