本章要点
菜单设计概述
用菜单设计器设计主菜单
用菜单模板设计主菜单
动态设计主菜单
快捷菜单的设计
菜单是Windows应用程序界面中最重要的元素之一,因此菜单设计是Windows应用程序设计必不可少的内容。Delphi提供的菜单设计手段为用户进行菜单设计提供了很大的方便。
本章将系统介绍这方面的内容。
7.1菜单设计概述
7.1.1菜单的种类与结构
Windows应用程序界面中的菜单有3种类型:主菜单、快捷菜单和控制菜单。
主菜单是Windows应用程序窗口中标题栏下边的菜单栏所包含的菜单系统,是大多数Windows应用程序都有的。
快捷菜单是当右击窗口中的对象时弹出的菜单,它为某些操作提供了很大的方便。
控制菜单是单击Windows应用程序窗口标题栏左端的图标时打开的、对窗口进行操作的菜单。
主菜单一般分为两级。窗口标题栏下边是菜单栏,里面包含若干个主菜单项,这是第一级;通常每一个主菜单项下有一个下拉菜单,里面排列着若干菜单项,有些菜单项还有子菜单(凡菜单项最右边有一黑色的向右的三角符号“?”者,表示该菜单项有子菜单),而且有的还不止一级子菜单,这些子菜单以级联方式显示在菜单项的右边,这是第二级。
设计应用程序的菜单系统时,最好不要把菜单命令直接放入菜单栏中,哪怕主菜单项的下拉菜单中只有一个菜单项。
另外,应尽量控制级联菜单的级数,一般不要超过4级,甚至可以不用级联菜单方式,而将主菜单项下的菜单项直接分组,组与组之间用分割条分隔。
按照菜单项的功能,可以将菜单项分为3种类型。
1.命令菜单项
用于执行某项操作的菜单项,也称菜单命令,是菜单项中数量最多、用户最常用的菜单项。这类菜单项没有特殊的指示标记。
2.状态设置菜单项
用于对系统、运行环境或菜单本身的某状态进行设置或取消的菜单项。通常这类菜单项的左边有一个对勾或复选框表示该设置是否处于有效状态,若当前有效,则单击变成无效,反之亦然。
3.打开对话框菜单项
用于打开对话框的菜单项,用户通过对话框完成系统要求的设置或选择,系统根据用户的设置或选择,实现相应的操作。这类菜单项右边有一个省略号标记。
7.1.2Delphi的菜单设计开发工具
Delphi为Windows应用程序菜单系统的设计提供了全面的设计开发工具。
Delphi组件模板中有两个用于菜单设计的组件:MainMenu和PopupMenu。通过MainMenu组件启动主菜单设计器(也称菜单编辑器),通过PopupMenu组件启动快捷菜单设计器,可以按自己的要求,方便快捷地进行主菜单、快捷菜单的设计。
另外,Delphi还提供了菜单模板。使用菜单模板,可以大大简化菜单系统的设计。
控制菜单是Delphi窗体自带的,不需要用户设计。
7.2用主菜单设计器设计主菜单
主菜单设计是应用程序菜单系统设计的主要任务。设计主菜单的主要工具是由MainMenu组件启动的主菜单设计器。
用主菜单设计器设计主菜单要经过如下的步骤。
7.2.1创建主菜单
创建主菜单是指用菜单设计器完成菜单系统菜单栏和每个菜单项的设计。
1.在窗体中放置MainMenu组件MainMenu组件位于组件模板的【Standard】选项卡上,其图标为。
在窗体中放置MainMenu组件的方法和放置其他组件的方法是一样的。
2.打开主菜单设计器
打开主菜单设计器的方法有如下几种:
用鼠标双击放置在窗体上的MainMenu组件;激活窗体上的MainMenu组件,单击对象检查器上Items属性值栏右端的【…】
按钮;
用鼠标右击MainMenu组件,在弹出的快捷菜单中执行【MenuDesigner】菜单命令。
打开的主菜单设计器如图7-1所示。
3.创建主菜单项
菜单设计器左上角显示的空白框是等待设计的第一个主菜单项。
在对象检查器的【Caption】属性值栏中输入第一个主菜单项的标题,如“文件”,然后按回车键,标题“文件”显示在第一个主菜单项处,其右边显示被激活的第二个空白主菜单项,如图7-2所示。按如上方法依次输入其他各主菜单项的标题,直到所有主菜单项添加完毕,创建完主菜单项的主菜单设计器如图7-3所示。
4.为各主菜单项添加菜单项
主菜单项创建完毕后,就要为每个主菜单项添加菜单项了。
用鼠标激活一个主菜单项,该主菜单项的下方显示一个带虚线框的空白菜单项,如图7-4所示。激活该菜单项,在对象检查器的【Caption】属性值栏中输入第一个菜单项的标题,如“新建”,然后按回车键,标题“新建”显示在第一个菜单项处,其下边显示第二个空白菜单项,如图7-5所示。按如上方法依次输入其他各菜单项的标题,直到该主菜单项的所有菜单项添加完毕。然后再用同样方法为其他的主菜单项添加菜单项。
5.将菜单项分组
如果一个菜单下的菜单项过多,或为使菜单项分类排列,可将菜单项分组,这是应用程序菜单系统中常见的。
菜单项分组用分隔线。实际上分隔线也是一个菜单项,只是它的Caption属性为减号“?”,即在需要加分隔线的地方,添加Caption属性值为“?”的菜单项即可。一个将菜单项分组的菜单如图7-6所示。
6.定义菜单项的快捷键和热键
当要执行某个菜单项时,不必单击该菜单项,而在键盘上按下“Alt键+某个字母”也行,这里“Alt键+某个字母”被称为“快捷键”。当然这里的某个字母不是随便的字母,对英文标题的菜单项,是菜单项的首字母(用下划线表示,如File);而对中文标题的菜单项,是菜单项后面圆括号中带下划线的字母,如文件(F)。
有的菜单项的右侧,标有一个“F5”等或者一个“Ctrl+P”等组合键,当要执行该菜单项时,不必单击该菜单项,而在键盘上按下这些键也行,这些键被称为“热键”。
菜单中的菜单项都有快捷键,即使用户不定义,也有默认的快捷键,只是默认快捷键设计时不显示,运行时才显示。
英文标题菜单项,默认的快捷键字母为其Caption属性的首字母,通常就用默认值,不再另行定义。中文标题菜单项,则系统分配一个英文字母作为快捷键的默认字母,用户也可以自己定义。
定义菜单项的快捷键,只需在要设置的菜单项的Caption属性值后面加上“(快捷键字母)”即可,假如要定义“新建”菜单项的快捷键为N,则在添加“新建”菜单项时,在其Caption属性值栏中输入“新建(N)”。
热键都需要用户专门定义,激活需要定义热键的菜单项,找到其【ShortCut】属性,该属性为枚举型属性,单击右端的下拉箭头按钮,从下拉列表框中选择一组组合键,如“新建”
菜单项的热键定义为“Ctrl+N”,则选择的组合键显示在该菜单项的右边,成为该菜单项的热键。
定义了部分菜单项的快捷键和热键的主菜单设计器如图7-7所示。
7.插入和删除菜单项
菜单项基本设计完成后,还可以根据需要插入新的菜单项或删除已有的菜单项。
激活插入新菜单项位置的菜单项,单击鼠标右键,弹出如图7-8所示的快捷菜单,执行【Insert】菜单命令,则在选择的菜单项前面显示一个空白的菜单项,根据需要设置它的Caption属性、快捷键和热键,则一个新的菜单项插入到菜单中。
要删除一个已有的菜单项,激活这个菜单项,单击鼠标右键,弹出如图7-8所示的快捷菜单,执行【Delete】菜单命令,则这个菜单项被删除。
8.调整菜单项位置
菜单项基本设计完成后,还可以根据需要调整菜单项的位置。激活要移动位置的菜单项,将鼠标指针指向该菜单项,然后按住鼠标左键,拖动鼠标到指定位置,放开鼠标左键即可。
9.创建级联菜单
要创建某个菜单项的子菜单,激活这个菜单项,单击鼠标右键,弹出如图7-8所示的快捷菜单,执行【CreateSubmenu】菜单命令,则这个菜单项的右边出现一个黑色的右向三角,同时菜单右侧出现一个空白菜单项,即为子菜单的第一个子菜单项,如图7-9所示,用如on属性及快捷键、热键,完成后按回车键,该子菜单项的下方显示第二个等待设置的空白子菜单项,如图7-10所示,依此完成整个子菜单的创建。用同样的方法,可以创建其他菜单项的子菜单和再下一级子菜单,从而完成菜单的级联。
至于前面介绍的菜单项的分组、快捷键和热键的设置等方法,同样适用于子菜单项。
7.2.2主菜单组件和菜单项的事件
以上的设计工作,还只是完成了应用程序菜单系统的外观设计。要使菜单能工作,同其他组件类似,还必须设计菜单的事件处理代码。
1.主菜单组件的事件
主菜单组件有两个事件:Images和OnChange。但这两个事件用得很少,这里就不做介绍了。
2.菜单项的事件
菜单项共有6个事件。在这些事件中,常用的只有一个事件,即OnClick事件。用鼠标单击菜单项,即触发该事件。
菜单项要完成的功能就由OnClick事件的处理代码来实现。设计应用程序的菜单系统,就要对菜单中的每个菜单项编写OnClick事件处理代码。
7.2.3菜单项的属性
经过以上的工作,基本上完成了应用程序主菜单系统的设计工作。但是为了得到更满意的效果,还需对菜单项进行必要的属性设置。
菜单项的属性设置和组件的属性设置方法是一样的,但菜单项的属性设置也必须在菜单设计器中进行。
菜单项常用的属性有不少,但大多用于动态设置菜单,即在程序运行中改变菜单的状态,这样的属性留待后面介绍,这里只介绍设计时用到的两个属性。
1.Default属性
Default属性决定菜单项标题是否采用黑体字显示。该属性为布尔型属性,其默认值为False。
2.Name属性
菜单项的Name属性值是菜单项在程序中的标识。其默认的属性值为N1,N2,…,建议用户在进行菜单设计时,按自己的喜好为每个菜单项起一个简明的名字。
7.3使用菜单模板
在应用程序设计中,经常要设计样式和功能类似的菜单。为了节省用户程序开发设计的时间,Delphi提供了专门的菜单模板,其中包含两个不同的File(文件)菜单,一个Edit(编辑)菜单,一个Window(窗口)菜单,两个Help(帮助)菜单,一个MDIFrame(多文档框架)菜单共7个模板。
菜单模板中的这些菜单使用标准Windows技术,如菜单项的命名、快捷键和热键的设置等,都采用约定俗成的形式。使用这些菜单模板设计菜单,可以使用户的设计更具有通用性。