4.7. 5 使用菜单模板
C++Builder提供了一些预定义的菜单以及菜单模板,其中包含一些使用较频繁的命令。可不加修改地在应用程序中使用这些菜单(除了编写代码),或是将它们做为起点,修改成所需的菜单。菜单模板不包含事件处理程序代码。
缺省安装时,C++Builder将菜单模板保存在BIN子目录中。这些文件具有.DMT(C++Builder菜单模板)扩展名。
可以将任何使用菜单设计器设计的菜单存为模板。将菜单存为模板后,可像使用任何预定义菜单一样使用它。若不再想要某一菜单模板,可将其从列表中删除。
要在应用程序中加入菜单模板:
1) 右击菜单设计器并选择InsertFromTemplate。(若不存在模板,上下文菜单的InsertFromTemplate选项显示呈暗灰。)InsertTemplate对话框出现(见图4-8),并显示可用菜单模板列表。
2) 选择要插入的菜单模板,然后按回车键或选择OK。这将会把菜单插入窗体中光标所在的位置。例如,若光标是在菜单项列表中的某一项上,菜单模板将插入到被选择项上方′若光标是在菜单栏中,菜单模板将插入到光标的左边。
要删除菜单模板:
1) 右击菜单设计器并选择DeleteTemplates。(若不存在模板№上下文菜单的DeleteTemplates选项显示呈暗灰。)
DeleteTemplates对话框出现,并显示可用菜单模板列表。
2) 选择要删除的菜单模板,并按Del键。
C++Builder从模板列表中删去该模板并会将其从硬盘删除。
4.7.6 将菜单保存为菜单模板
设计的任何菜单都可存为菜单模板以便能重用。可以使用菜单模板来保持应用程序的一致性,也可使用它们作为起点以供进一步定制。
你所存的菜单模板一般是以.DMT文件存储在BIN子目录中。要保存菜单为菜单模板:
1) 设计需重新使用的菜单。这个菜单可包含任意的项、命令及子菜单;在当前菜单设计器窗口中的所有项都可被存入一个可重用菜单。
2) 右击菜单设计器并选择SaveAsTemplate。SaveTemplate对话框出现,如图4-9所示。
3) 在TemplateDescription编辑框,为菜单加上简短的描述№并选择OK。SaveTemplate对话框关闭,同时保存设计的菜单并返回菜单设计器窗口。
注重:这里所写的描述只显示在SaveTemplate、Insert Template、DeleteTemplates对话框中。与菜单的Name或Caption属性并不相关。
模板菜单项和事件处理程序的命名规则
将菜单存为模板时,C++Builder并不保存它们的Name属性,因为每个菜单必须在其拥有者(窗体)范围内拥有一个唯一的名字。当通过菜单设计器使用模板将菜单插入新窗体时,C++Builder会为其中所有的项生成一个新名字。
例如,将File菜单存为模板。在原始菜单中,它被命名为MyFile。当将它作为模板插入一新菜单时,C++Builder将它命名为File1。若将它插入一个已包含菜单项File1的菜单中,C++Builder将它命名为File2。
C++Builder也不会为存入模板的菜单保存其相关的OnClick事件处理程序,因为无法试验该代码是否适用于新的窗体。当为菜单模板项生成新的事件处理程序时,C++Builder也生成事件处理程序的名字。
可以方便地把菜单模板项与窗体现有的OnClick事件处理程序联系起来。