资源预览内容
第1页 / 共177页
第2页 / 共177页
第3页 / 共177页
第4页 / 共177页
第5页 / 共177页
第6页 / 共177页
第7页 / 共177页
第8页 / 共177页
第9页 / 共177页
第10页 / 共177页
亲,该文档总共177页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章 菜单设计,5.1 菜单设计简介 5.2 主菜单设计 5.3 菜单命令响应 5.4 运行时设置菜单 5.5 创建动态菜单 5.6 图形菜单 5.7 菜单模板 5.8 快捷菜单设计 5.9 控制菜单设计,Delphi 提供了两种菜单组件,主菜单(MainMenu)和弹出式菜单(PopupMenu)。,它们都位于Standard选项卡上,分别用于设计主菜单和快捷菜单。,另外,还可通过函数来定制窗口的控制菜单。,主菜单设计 菜单命令响应 创建动态菜单 图形菜单 快捷菜单设计 控制菜单设计*,5.1 菜单设计简介,5.1.1 菜单结构,一般菜单分为两级结构。,窗口标题栏下显示的是菜单栏,菜单栏包含若干主菜单选项,每一主菜单选项下有个下拉菜单,排列着各菜单命令项。,有些菜单命令项还有子菜单,则以级联的方式显示在该菜单命令项的右边,依次排列,直至最后一级子菜单。,带有级联菜单的菜单命令项通常在命令项最右边有一个右向的三角符号。,当某菜单命令项被选中时,则以深色显示或打开其级联菜单。,5.1.2 菜单命令项的作用,菜单命令项被选中后,一般来说作用有如下三种。,执行命令:用于执行某操作的菜单命令,它们没有特殊的指示符号。,设置状态:用于设置或取消某设置的菜单命令项。,通常用来改变某特殊选顶的状态。,这些命令项常用复选标记“”或单选标记“”来表明该选项是否处于有效状态。,在有效状态情况下,再次执行该命令项则产生相反的效果。,打开对话框:用于激活对话框。,具体操作在对话框中进行,操作完毕后按OK(确定)按钮予以确认或按Cancel(取消)按钮予以取消。,这些命令项通常在最右边有一个省略号作指示符号。,5.1.3 菜单设计器,1MainMenu设计器主菜单设计器 用于设计下拉式主菜单。,2PopupMenu设计器快捷菜单设计器 用于设计弹出式快捷菜单。,通常情况下,右击鼠标打开的就是快捷菜单。,5.2 主菜单设计,利用MainMenu组件可在窗体上生成菜单栏以及菜单栏下的菜单选项。,设计时的菜单具有所见即所得的效果,即设计时样式与运行时完全一样。,5.2.1 打开主菜单设计器,设计主菜单的第一步是打开主菜单设计器,其操作如下。,(1).在组件板的Standard选项卡中选择MainMenu组件,把它添加到窗体上,此时窗体上将出现一个MainMenu图标。,(2).执行如下操作之一,打开MainMenu Designer主菜单设计器: 双击窗体中的MainMenu组件图标。,右击MainMenu组件,打开一个快捷菜单,再从中选择Menu Designer命令。,选定MainMenu组件,再在对象查看器中单击Items属性值编辑框右边的省略号按钮。,主菜单设计器打开后。,在主菜单设计器中有一个深色加亮的方块,即第一个空白菜单,用户可以输入菜单名。,5.2.2 添加菜单命令项,首先添加菜单,选中主菜单设计器中的空白菜单,然后利用对象查看器设置菜单名。,同其他组件一样,“&”用于设置菜单的快捷键,“&”后的字符即为快捷键键名。,可用“Alt+快捷键键名”来打开菜单或执行菜单命令项的键盘命令组合。,添加菜单后,将会发生两个变化。,第一个变化是所添加的菜单的右边又出现空白菜单虚框,表示可继续添加菜单。,第二个变化是所添加的菜单下面出现一个空白菜单命令项虚框,用于添加菜单命令项。,接着是添加菜单命令项。,单击新添加的菜单下的空白菜单命令项虚框,此时该虚框将加亮,表示获得输入焦点,即可利用对象查看器设置菜单命令项名和快捷键。,注意:若不给菜单、菜单命令项的Name属性赋值,Delphi会自动将为其赋值。,如果不给菜单命令项名称赋值,将在添加菜单事件时给菜单命令项的识别造成一定困难。,因此,建议按功能给菜单、菜单命令项的Name属性赋值。,当觉得菜单命令项够了后,可以选取主菜单项右边的空白菜单虚框,开始添加第二个菜单,以及其下的菜单命令项。,5.2.3 菜单命令项分组,如果一个菜单中的菜单命令项过多,可以按功能将菜单命令项分为若干组,组与组之间用分割线隔开。,在Delphi 中,菜单分割条也是一项菜单命令项,只不过该菜单命令项的Caption属性为“-”(减号)。,注意:菜单分割条的Caption属性只能为一个“-”(减号),多了反而不是分割条。,5.2.4 菜单命令项热键,所谓热键,就是指在不打开菜单的情况下,直接使用预先设置的组合键,就可以执行某个菜单命令项。,很明显,热键和快捷键不同,因为快捷键必须打开当前的菜单时才能打开。,而且,菜单栏中的主菜单项只能有快捷键,而不能有热键。,如果要给菜单命令项设置热键,直接单击该菜单命令项的Shortcut属性,打开一下拉列表框,从中选择所需的热键名称即可。,5.2.5 菜单命令项调整,创建完菜单后,经常会发生要在已有菜单、菜单命令项之间插入新的菜单或菜单命令项。,剔除不需要的菜单、菜单命令项,调整菜单、菜单命令项的排列等情况,这就是现在要介绍的菜单命令项调整。,如果要在现有菜单、菜单命令项之前插入新的菜单、菜单命令项,可右击该菜单、菜单命令项,打开一个快捷菜单从中选择Insert命令。,如果要删除现有菜单、菜单命令项,可右击该菜单、菜单命令项,打开一个快捷菜单,从中选择Delete命令项。,如果要调整现有菜单、菜单命令项的排列情况,可选择要调整的菜单、菜单命令项,按住并拖动鼠标,到所需位置再释放鼠标。,5.2.6 创建级联菜单,级联菜单指的是菜单命令项包括的子菜单。,依此类推,一个菜单可以有多级级联菜单。,不过,从条理性和操作方便而言,级联菜单最好不要超过四级。,如果要为某菜单命令项创建级联菜单可以右击该菜单命令项,打开一个快捷菜单,然后从中选择Create Submenu命令(或直接按Ctrl+键)。,此时,该菜单命令项就会出现一个右向三角形和一个空白的级联菜单。,往级联菜单的各菜单命令项的Caption属性中输入标题,并设置Name属性和快捷键,就创建了一个级联菜单。,5.3 菜单命令响应,主菜单对应于TMainMenu类,而每一项菜单和菜单命令项都对应于TMenuItem类。,这些TMenuItem都有自己的事件,用以响应各菜单命令项。,5.4 运行时设置菜单,在应用程序运行时,可以进行一系列的操作来调整菜单结构和外观。,如给菜单命令项添加单选或复选标记、将菜单命令项灰显、隐藏等。,通常,有五种属性可用于应用程序运行时设置菜单。,Checked属性:可用于在运行时给菜单命令添加复选标记。,RadioItem属性:可用于在运行时给菜单命令项添加单选标记。,Enabled属性:可用于在运行时将菜单命令项灰显。,Caption属性:可用于在运行时调整菜单命令项的文本。,Visible属性:可用于在运行时隐藏菜单命令项。,5.4.1 菜单命令项灰显,当我们在进行菜单操作时,有时要求某项菜单或菜单命令项不能被用户操作。,就把该菜单或菜单命令项用灰色显示,用户对它的操作不会有任何响应。,菜单命令项灰显可以通过设置菜单命令项的Enabled属性来实现,当该属性为True时,菜单命令项有响应;,当该属性为False时,菜单命令项灰显,不响应鼠标和键盘操作。,5.4.2 菜单命令项隐藏,菜单或菜单命令项灰显是为了让用户不能对它操作。,但是由于它的可见性,总会吸引用户的注意,所以有时我们干脆让菜单或菜单命令项隐藏起来。,这可利用菜单命令项的Visible属性来实现的,当该属性为True时菜单命令项可见。,属性为False时,则该菜单命令项隐藏。,5.4.3 改变菜单命令项文本,在运行程序时,可以让菜单命令项根据运行的情况来调整菜单命令项的文本内容。,这主要通过菜单命令项的Caption属性来实现。,5.4.4 菜单命令项单选标记,所谓单选菜单命令项就是一组相互排斥的菜单命令项,用户只能在该组命令项中选择一个。,设计单选菜单命令项,必须保证两个条件。,首先这一组菜单命令项位于同一下拉菜单或同一级联菜单中,而且它们的GroupIndex属性必须相同;,其次RadioItem属性都是True。,这样,唯一被选中的菜单命令项前面就出现一个圆点标记,表示该菜单命令项被选中。,菜单命令项的Checked属性为True时,就添加单选标记;为False时,取消单选标记。,5.4.5 菜单命令项复选标记,复选标记是指当用户选中某个菜单命令项时,系统会在该菜单命令项前加一个复选标记“”。,复选标记常用于一些状态设置的菜单命令项,如果取消选中,则“”标记消失。,设置复选标记很简单,只要把菜单命令项的Checked属性设置为True。,该菜单项就有复选标记,Checked属性为False时,没有复选标记。,5.5 创建动态菜单,主菜单对应于Delphi 中的TMainMenu类,主菜单项(常简称为菜单)对应于Delphi 中的TMenuItem类。,通常主菜单栏中的各菜单构成一个列表,存储在主菜单(TMainMenu)的Items属性中。,而每一菜单中的菜单命令数则存储在该菜单(TMenuItem)的Count属性中。,这样,往主菜单栏中添加一个菜单,就可以利用TMainMenu类的Items属性,通过Insert方法来实现。,而从主菜单栏中删除一个菜单,同样是利用Items属性,不过是利用Remove方法。,在菜单中添加或删除一个菜单命令,则需利用TMenuItem类的count属性,同样也是利用Insert或Remove方法。,动态添加菜单时,必须为每一菜单命令指定OnClick事件的响应过程名称。,在此过程中,可以为多个菜单命令的OnClick事件指定同一个响应过程,而通过Sender参数确定具体执行哪一项命令项。,5.6 图形菜单,菜单中应用图形主要有两种方式,第一种方式是在菜单命令项前加上图标。,第二种方式是以图形代替菜单命令项的文本来表示菜单命令项。,5.6.1 菜单命令项图标,在许多应用程序的菜单命令项前,通常都有菜单命令项图标,这些图标一般都和工具栏上快捷按钮的图标一致。,同时,菜单命令项前拥有图标也使菜单命令项的含义更加直接易懂。,在Delphi中,可以很容易地向菜单命令添加图标,用户只需向窗体添加一个图像列表(ImageList)控件,向该控件添加一系列位图,,再用菜单组件的Images属性将ImageList组件与菜单相连,并为菜单命令项设置相应的ImageIndex属性。,注意:给菜单命令添加图标后,使用菜单命令的Checked属性时,将不会开出现“”标记,而是菜单命令图标下凹。,5.6.2 图形菜单命令项*,所谓图形菜单,指的是用位图代替菜单命令的文本,来显示菜单命令。,有些时候,以图形方式显示菜单,将更加直观和有效。,5.7 菜单模板,我们在菜单设计中,经常要设计同种样式和作用的菜单项,有些菜单格式都成了约定俗成的标准。,所以,可以让Delphi 自动创建某些格式的菜单项。,而且能够非常全面地完成大部分标准格式的设计,这就是使用菜单模板。,使用菜单模板可以给用户节省大量的时间,不必再重复一些简单的格式设计,而且由于菜单模板使用的是标准Windows技术。,如菜单命令的命名、热键的设置都非常的规范。,当然,在某些场合菜单模板创建的菜单不能满足用户的要求,还需要自己修改。,5.7.1 插入菜单模板,使用菜单模板,执行如下操作。,(1)在窗体中插入MainMenu组件。,(2)双击MainMenu组件,进入主菜单设计器窗口。,(3)右击要插入菜单模板的空白主菜单项或空白菜单命令,或按组合键Alt+Fl0,打开一快捷菜单。,(4)选择Insert From Template命令,打开Insert T
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号