《《Delphi程序设计及实验指导》电子教案--第5章.ppt》由会员分享,可在线阅读,更多相关《《Delphi程序设计及实验指导》电子教案--第5章.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Delphi7程序设计与实验指导张景安张景安 赵慧勤赵慧勤 张叶娥张叶娥 傅文博傅文博编编 著著第五章第五章 菜单设计菜单设计 菜菜单单是是WindowsWindows应应用用程程序序设设计计中中的的重重要要组组成成部部分分,大大部部分分应应用用程程序序的的功功能能靠靠菜菜单单来来实实现现。DelphiDelphi7 7的的可可视视化化开开发发环环境境提提供供了了大大量量的的开开发发工工具具,使使得得DelphiDelphi7 7应应用用程程序序开开发发中中菜菜单单的的设设计计变变得得方方便便灵灵活活。用用户户可可以以通通过过组组件件面面板板的的StandardStandard选选项项卡卡的的
2、MainMenuMainMenu组组件件来来创创建建用用户户程程序序的的主主菜菜单单,可可以以用用PopupMenuPopupMenu组组件件来来设设计计下下拉拉菜菜单单,本章主要介本章主要介绍绍菜菜单设计单设计的基本方法。的基本方法。5.1 创建主菜单创建主菜单 在在一一个个标标准准的的WindowsWindows应应用用程程序序中中,菜菜单单可可以以分分为为两两级级:第第一一级级是是窗窗口口标标题题下下的的菜菜单单栏栏,称称为为主主菜菜单单;第第二二级级是是这些菜单所包含的选项,称为菜单项。这些菜单所包含的选项,称为菜单项。按照菜按照菜单项单项的功能,可以将菜的功能,可以将菜单项单项分分为
3、为三种三种类类型:型:l l 命命令令:用用来来执执行行某某项项操操作作的的菜菜单单项项,这这是是用用户户最最常常见见、使用最、使用最频频繁的菜繁的菜单项单项。l l 状状态态设设置置:用用来来对对系系统统包包括括菜菜单单本本身身的的某某些些状状态态进进行行设设置置和和说说明明,通通常常这这些些菜菜单单项项旁旁边边都都有有对对号号或或者者复复选选框来框来说说明其是否明其是否处处于有效状于有效状态态。l l 对对话话框框菜菜单单项项:用用来来激激活活对对话话框框,通通常常不不执执行行具具体体的的操操作作,而而是是由由用用户户通通过过对对话话框框的的操操作作来来完完成成相相应应的的任任务务。通通常
4、常这这些些菜菜单单项项的的旁旁边边都都有有省省略略号号()来来进进行行识识别别。5.1 创建主菜单创建主菜单5.1.1 TMainMenu组件组件 TMainMenuTMainMenu组组件件位位于于组组件件面面板板的的StandardStandard选选项项卡卡上上(如如图图4-14-1),用来创建主菜单。),用来创建主菜单。1 1用途用途 TMainMenuTMainMenu组组件件用用来来设设计计用用户户的的主主菜菜单单,一一般般通通过过鼠鼠标标和和键键盘盘的的热热键键来来激激活活特特定定的的菜菜单单项项。当当用用户户将将一一个个TMainMenuTMainMenu组组件件添添加加到到窗
5、窗体体(TMainMenuTMainMenu组组件件不不能能改改变变大大小小),这这时时,ObjectObjectInspectorInspector中中会会显显示示TMainMenuTMainMenu组组件的属性。双件的属性。双击该组击该组件后,在此可件后,在此可进进行菜行菜单设计单设计。2 2主要属性主要属性(1)(1)AutoHotkeysAutoHotkeys属属性性:该该属属性性用用来来指指定定选选项项的的快快捷捷键键是否可以自动重置。是否可以自动重置。5.1 创建主菜单创建主菜单(2)(2)AutoMergeAutoMerge属属性性:该该属属性性用用来来设设置置在在多多文文档档的
6、的应应用用程程序序中中,非非主主窗窗体体的的主主菜菜单单是是否否和和主主窗窗体体中中的的主主菜菜单单合合并并。当当AutoMergeAutoMerge属属性性的的值值为为falsefalse时时,非非主主窗窗体体的的主主菜菜单单不不能能和和主窗体的主菜主窗体的主菜单单合并。合并。(3)(3)ImagesImages属属性性:该该属属性性通通过过指指定定一一组组BitmapBitmap或或IconIcon文文件件,在在MenuItemMenuItem中中指指定定ImagesImages的的索索引引,实实现现在在各各选选项项旁旁边边加加入入图图像。像。(4)(4)ItemsItems属属性性:该该
7、属属性性用用于于存存储储主主菜菜单单中中各各菜菜单单项项的的内内容容。双双击击ItemsItems属属性性右右侧侧的的“”按按钮钮,进进入入菜菜单单设设计计器器。在在菜菜单单设计设计器下,所添加的每器下,所添加的每个个选项选项也将也将对应对应一一组组属性。属性。5.1 创建主菜单创建主菜单5.1.2 主菜单的设计主菜单的设计现在以Word 2000主菜单和“文件”子菜单为例,介绍创建主菜单的方法,步骤如下:(1)选择TMainMenu组件加入到窗口中。(2)双击TMainMenu组件,弹出菜单设计器。(3)在菜单设计器中加亮显示的部分是第一级菜单栏。可以在Object Inspector窗口中
8、设置它的属性Caption、ShortCut等。在Object Inspector窗口的Caption属性中输入菜单名按下回车键后,加亮显示的位置移至下拉菜单的下一项,同时,菜单栏顶层上会出现虚线框指示下一个顶层菜单项的位置。(4)设置快捷键和热键。在Object Inspector窗口中可以方便地完成热键的设置,如图5-1中,在“文件”菜单项中包含了带下划线的字符,它设置了菜单项的热键。5.1 创建主菜单创建主菜单 在在CaptionCaption属属性性的的输输入入域域中中,将将“&”符符号号放放到到需需要要指指定定为为热热键键的的字字母母前前面面,该该字字母母将将被被用用下下划划线线显显
9、示示,运运行行时时,按按Alt+Alt+热键字母可以激活该菜单项。热键字母可以激活该菜单项。在在ObjectObjectInspectorInspector窗窗口口中中也也可可以以方方便便地地完完成成快快捷捷键键的的设设置置,如如图图5-15-1,在在文文件件新新建建菜菜单单项项后后跟跟有有“Ctrl+NCtrl+N”字字符符串串,它它表表示示在在程程序序运运行行时时,可可以以通通过过按按Ctrl+NCtrl+N组组合合键键来来激激活活该该菜菜单单项项的的OnClickOnClick事事件件处处理理函函数数。可可以以在在ObjectObjectInspectorInspector窗窗口口中中设
10、设置置ShortCutShortCut属属性性来来完完成成快快捷捷键键的的设置。设置。(5)(5)菜单分组菜单分组 将将下下拉拉式式菜菜单单中中的的菜菜单单项项分分组组是是菜菜单单设设计计中中的的常常见见手手段段,分分组组主主要要是是使使用用分分隔隔条条,可可以以通通过过设设置置CaptionCaption属属性性为为“-”“-”(减减号号)来来实实现现菜菜单单的的分分隔隔条条。(要要注注意意只只要要输输入一个入一个“-”“-”就够了,不要多输入。)就够了,不要多输入。)5.1 创建主菜单创建主菜单图5-1Word2000主菜单及“文件”下拉菜单5.1 创建主菜单创建主菜单(6)(6)为每一个
11、菜单项增加图标为每一个菜单项增加图标 可以通过以下两种方法来为每一个菜单项增加图标:可以通过以下两种方法来为每一个菜单项增加图标:l l 设设置菜置菜单项单项的的BitmapBitmap属性。属性。l l 为为TMainMenuTMainMenu组组件件指指定定图图标标列列表表,即即通通过过ImagesImages属属性性,设设置每一个菜置每一个菜单项单项的的ImageIndexImageIndex属性,属性,设设置要使用的置要使用的图标图标。(7)(7)设计级联设计级联菜菜单单 所所谓谓级级联联菜菜单单,就就是是当当鼠鼠标标选选中中某某一一菜菜单单项项时时,如如果果该该菜菜单单项项有有子子菜
12、菜单单,则则子子菜菜单单并并列列显显示示于于该该菜菜单单的的右右边边。要要建建立立级级联联菜菜单单,选选中中要要建建立立子子菜菜单单的的菜菜单单项项,单单击击鼠鼠标标右右键键,在在弹弹出出的的快快捷捷菜菜单单中中选选择择“CreateCreateSubmenuSubmenu”命命令令,然然后后就就会会在在原原菜菜单单项项旁旁边边出出现现一一个个向向右右的的箭箭头头,并并带带有有一一个个空空白白菜菜单单项项的的级级联联菜菜单单。子子菜菜单单项项的的设设置置与与前前面面所所讲讲的的设设置置方方法法相同。相同。5.1 创建主菜单创建主菜单(8)(8)为菜单项指定动作为菜单项指定动作 设设置置了了菜菜
13、单单项项的的外外观观后后,菜菜单单栏栏在在程程序序运运行行时时只只有有一一个个空空架架子子,需需要要为为每每一一个个菜菜单单项项定定义义OnClickOnClick事事件件处处理理函函数数,以以便便完完成成一一系系列列的的命命令令。在在菜菜单单设设计计器器中中双双击击菜菜单单项项,或或者者在在主主窗窗口口中中单单击击菜菜单单项项,这这时时系系统统会会自自动动生生成成该该菜菜单单项项的的OnClickOnClick事事件件处处理理函函数数的的框框架架,为为其其增加特定代增加特定代码码便可完成特定的功能。便可完成特定的功能。【例例5-15-1】使使用用TMainMenuTMainMenu组组件件创
14、创建建人人事事管管理理系系统统主主菜菜单,界面如图单,界面如图5-45-4所示。所示。5.1 创建主菜单创建主菜单图5-4设计主菜单5.1 创建主菜单创建主菜单(1)窗 体 设 计。打 开 工 程 RsglPrj.dpr,选 择FileNewForm,添加新的窗体,将窗体名的Caption属性设为MainForm,然后将TMainMenu组件添加到窗体中。(2)单击Items属性右边的“”按钮或双击窗体中所添加的TMainMenu组件。(3)添加菜单项。在菜单栏上出现一个蓝色且内部有虚线的框。将Caption属性设置为“人事管理(&M)”,按“回车”键,“人事管理(M)”就出现在第一个菜单上,
15、蓝色的框下移,用户继续添加下拉菜单项,依次添加“教师管理”、“部门管理”和“退出”。5.1 创建主菜单创建主菜单4.2.3 4.2.3 TMemoTMemo组件组件组件组件 TMemoTMemo备备注注框框组组件件位位于于组组件件面面板板的的StandardStandard选选项项卡卡上上(如图(如图4-14-1),可以显示、编辑多行文本。),可以显示、编辑多行文本。1 1用途用途 TMemoTMemo组组件件为为用用户户提提供供了了一一种种处处理理多多行行文文本本的的方方法法,还还可可用用来来快快速速阅阅读读文文件件中中的的数数据据。尽尽管管TLabelTLabel、TEditTEdit和和
16、TMemoTMemo组组件件有有许许多多相相似似之之处处,但但它它们们的的使使用用场场合合却却有有所所不不同同。如如果果只只显显示示用用户户不不能能修修改改的的信信息息,可可采采用用标标签签;如如果果用用户户只只处处理理单单行行信信息息,则则使使用用TEditTEdit组组件件;如如果果用用户户要处理多行文本,那么只能采用要处理多行文本,那么只能采用TMemoTMemo组件。组件。第第一一个个菜菜单单设设计计完完后后,单单击击“人人事事管管理理(MM)”菜菜单单右右边边的的虚虚线线框框(或或按按键键盘盘上上的的键键),则则开开始始填填写写第第二二个个菜菜单的内容。单的内容。5.1 创建主菜单创
17、建主菜单 在在“信信息息查查询询(Q Q)”菜菜单单中中添添加加“教教师师查查询询”,在在“教教师师查查询询”菜菜单单项项处处单单击击鼠鼠标标右右键键,在在弹弹出出的的快快捷捷菜菜单单中中选选择择“CreateCreateSubmenu”Submenu”命命令令,然然后后添添加加“按按姓姓名名查查询询”和和“按按职职工工号号查查询询”选选项项。按按同同样样方方法法在在“信信息息查查询询(Q Q)”菜菜单中添加单中添加“部门查询部门查询”,并建立相应的级联菜单。,并建立相应的级联菜单。第第二二个个菜菜单单设设计计完完后后,单单击击“信信息息查查询询(Q Q)”菜菜单单右右边边的的虚线框,开始填写
18、第三个菜单的内容。虚线框,开始填写第三个菜单的内容。(4)(4)编编写写各各选选项项所所对对应应的的代代码码。双双击击相相应应的的选选项项,则则进进入入单单元元代代码码编编辑辑器器,并并给给出出个个空空过过程程。用用户户只只要要在在其其中中添添加所需的代码即可。加所需的代码即可。5.2 设计快捷菜单设计快捷菜单5.2.1 5.2.1 TPopupMenuTPopupMenu组件组件组件组件 1 1用途用途 TPopupMenuTPopupMenu组组件件位位于于组组件件面面板板的的StandardStandard选选项项卡卡上上(如如图图4-14-1),用用来来建建立立快快捷捷菜菜单单。所所谓
19、谓快快捷捷菜菜单单,通通常常是是具具有常用功能的菜单,通过单击鼠标右键来激活快捷菜单。有常用功能的菜单,通过单击鼠标右键来激活快捷菜单。2 2主要属性主要属性(1)(1)AutoPopupAutoPopup属属性性:该该属属性性确确定定当当右右击击时时,菜菜单单是是否否出出现现。其其默默认认值值为为truetrue,当当右右击击后后出出现现菜菜单单,若若为为falsefalse时时,右击后菜单不出现。右击后菜单不出现。(2)(2)HandleHandle属属性性:该该属属性性允允许许用用户户访访问问表表示示QMenuQMenu对对象象实实例的例的4 4字节标识符。字节标识符。5.2 设计快捷菜
20、单设计快捷菜单(3)(3)HelpContextHelpContext属性:提供一个用于联机帮助的文本号。属性:提供一个用于联机帮助的文本号。(4)(4)ItemsItems属属性性:该该属属性性是是选选项项的的描描述述,使使用用它它可可以以访访问问关于选项的信息。关于选项的信息。(5)(5)PopupComponentPopupComponent属属性性:该该属属性性指指出出响响应应右右击击显显示示快快捷菜单的组件的名字。捷菜单的组件的名字。注注注注意意意意:当当用用户户设设计计好好一一个个菜菜单单后后,并并不不代代表表在在程程序序执执行行时时就就可可以以使使用用,因因为为窗窗体体(Form
21、Form)并并不不知知道道还还有有快快捷捷菜菜单单,为为 此此 还还 要要 设设 置置 窗窗 体体 的的 PopupMenuPopupMenu属属 性性,单单 击击PopupMenuPopupMenu属属性性右右边边的的下下三三角角按按钮钮,选选择择窗窗体体中中所所创创建建的的快快捷捷菜菜单单的的名名字字如如PopupMenulPopupMenul,这这样样在在程程序序执执行行时时,当右击窗体后,便会弹出相应的菜单。当右击窗体后,便会弹出相应的菜单。5.2 设计快捷菜单设计快捷菜单 5.2.2 5.2.2 快捷菜单设计快捷菜单设计快捷菜单设计快捷菜单设计 设设计计快快捷捷菜菜单单与与设设计计主
22、主菜菜单单类类似似,只只是是它它只只能能有有一一个个菜菜单单(其其 中中 的的 项项 可可 以以 有有 子子 菜菜 单单)。选选 择择 组组 件件 面面 板板 的的StandardStandard选选项项卡卡上上TPopupMenuTPopupMenu组组件件,添添加加到到窗窗体体中中,双双击击TPopupMenuTPopupMenu组组件件弹弹出出快快捷捷菜菜单单设设计计器器。该该窗窗口口的的菜菜单单项项设设计计与与MainMenuDesignerMainMenuDesigner完完全全相相同同,这这里里不不再再赘赘述。述。【例【例5-25-2】设计具有如图】设计具有如图5-75-7所示的快
23、捷菜单。所示的快捷菜单。(1)(1)窗窗体体设设计计。在在窗窗体体中中添添加加一一个个MemoMemo组组件件(位位于于组组件件面板的面板的StandardStandard选项卡上)和一个选项卡上)和一个TPopupMenuTPopupMenu组件。组件。(2)(2)组组件件的的属属性性设设置置。按按表表5-15-1设设置置组组件件的的属属性性,设设置置的的结果,如图结果,如图5-85-8所示。所示。5.2 设计快捷菜单设计快捷菜单图5-7设计的快捷菜单图5-8窗体的设计(3)设计快捷菜单。双击TPopupMenu组件,弹出快捷菜单设计器,在菜单栏上出现一个蓝色且内部有虚线的框。将Captio
24、n属性设置为“剪切”,按“回车”键后,“剪切”一词就出现在第一个菜单上。蓝色框下移,继续设置“复制”、“粘贴”、“删除”菜单项。5.2 设计快捷菜单设计快捷菜单(4)(4)编编写写程程序序代代码码。编编写写快快捷捷菜菜单单的的“剪剪切切”、“复复制制”、“粘贴粘贴”、“删除删除”的的OnClickOnClick事件处理程序。事件处理程序。5.3 使用模板设计菜单使用模板设计菜单 菜菜单单模模板板包包括括:两两个个不不同同的的下下拉拉式式FileFile菜菜单单、一一个个包包括括对对象象链链接接与与嵌嵌入入命命令令的的EditEdit菜菜单单、一一个个WindowsWindows菜菜单单和和两两
25、个个HelpHelp菜菜单单,另外还有一个完全的多文档界面(另外还有一个完全的多文档界面(MDlMDl)菜单模板。菜单模板。使使用用菜菜单单模模板板可可以以带带来来很很多多好好处处。首首先先,可可以以给给用用户户节节省省大大量量的的时时间间。其其次次,菜菜单单模模板板使使用用的的是是标标准准的的WindowsWindows技技术术,如如菜菜单单命命令令的的命命名名、快快捷捷键键和和热热键键的的设设置置等等,都都是是采采用用约约定定俗俗成成的的格格式式。如如果果已已有有的的菜菜单单模模板板不不能能满满足足用用户户编编写写的的应应用用程程序序要要求求,用用户户就就只只能能自自己己动动手手设设计计菜
26、菜单单。同同时时,DelphiDelphi也也允允许许用用户户将将自自定定义义的的菜菜单单加加入入到到菜菜单单模模板板中中。下下面面介介绍绍有有关关菜菜单模板的操作。单模板的操作。在在DelphiDelphi7 7中中按按照照如如下下步步骤骤就就可可以以完完成成菜菜单单模模板板的的插插入入、创创建建、删除等功能:删除等功能:5.3 使用模板设计菜单使用模板设计菜单(1)(1)在窗体中添加一个在窗体中添加一个TMainMenuTMainMenu组件。组件。(2)(2)双双击击TMainMenuTMainMenu组组件件,弹弹出出主主菜菜单单设设计计器器,单单击击鼠鼠标标右键,出现如图右键,出现如
27、图5-105-10所示的快捷菜单。所示的快捷菜单。(3)(3)在在图图5-105-10中中选选择择InsertInsertFromFromTemplateTemplate命命令令,出出现现如如图图5-115-11所示的窗口。所示的窗口。图5-10快捷菜单图5-11插入菜单模板5.3 使用模板设计菜单使用模板设计菜单(4)(4)从从图图中中选选择择需需要要的的菜菜单单模模板板,然然后后单单击击OKOK按按钮钮,就就完完成成了了插插入入菜菜单单模模板板的的操操作作。如如图图5-125-12所所示示为为FileFile菜菜单单模模板。板。(5)(5)如如果果要要在在空空白白菜菜单单项项上上插插入入菜
28、菜单单模模板板,只只需需在在空空白白菜菜单单项项上上单单击击鼠鼠标标右右键键,再再按按照照上上面面的的步步骤骤进进行行操操作作即即可可。如图如图5-135-13所示。所示。(6)(6)在在 图图 5-135-13的的 快快 捷捷 菜菜 单单 中中 有有 一一 个个 命命 令令 为为 SaveSave AsAsTemplateTemplate,该该选选项项允允许许用用户户将将自自定定义义的的菜菜单单存存为为模模板板菜菜单单,如如图图5-145-14所所示示。单单击击SaveSave AsAs TemplateTemplate选选项项,弹弹出出SaveSaveTemplateTemplate对对话
29、话框框,如如图图5-155-15所所示示。选选择择自自定定义义的的模模板板菜菜单单,单击单击OKOK按钮。按钮。5.3 使用模板设计菜单使用模板设计菜单图5-12File菜单模板图5-13在空白菜单向上添加菜单模板图5-14存储自定义模板快捷菜单图5-15存储自定义模板5.3 使用模板设计菜单使用模板设计菜单(7)(7)DelphiDelphi允允许许用用户户删删除除不不需需要要的的菜菜单单模模板板,同同样样在在图图5-5-1414的的快快捷捷菜菜单单中中选选择择Delete Delete TemplateTemplate命命令令,出出现现如如图图5-5-1616所所示示的的画画面面,只只要要
30、选选中中不不需需要要的的模模板板,单单击击OKOK按按钮钮就就可以将其删除。可以将其删除。图5-16删除模板习题习题 1 1按按照照菜菜单单项项的的功功能能,菜菜单单项项分分为为哪哪3 3种种类类型型?各各有有什什么功能?么功能?2 2如何设置快捷键和热键,如何进行菜单分组?如何设置快捷键和热键,如何进行菜单分组?3 3利利用用TMainMenuTMainMenu组组件件创创建建一一个个主主菜菜单单“数数据据查查询询”,包包括括的的菜菜单单项项有有:查查询询基基本本情情况况、查查询询工工作作情情况况、查查询工资情况。询工资情况。4 4利利用用TPopupMenuTPopupMenu组组件件建建立立快快捷捷菜菜单单(包包括括的的菜菜单单项项有:还原、最小化、移动、关闭)。有:还原、最小化、移动、关闭)。设设计计好好后后,如如何何使使在在程程序序执执行行时时,右右击击窗窗体体会会弹弹出出相相应应的菜单。的菜单。5 5如何利用菜单模板创建、插入、删除菜单。如何利用菜单模板创建、插入、删除菜单。