创建应用程序菜单与菜单融合
父窗口的菜单应作为应用程序主菜单。如果子窗口有菜单,则当子窗口在运行获得焦点并最大化时,子窗口的菜单项将融合父窗口菜单。
创建父窗口与子窗口菜单的方法与创建普通窗体菜单类似。菜单融合是指程序运行过程中,子菜单与父窗口菜单的相互作用。如当子窗口获得焦点时,子窗口的菜单或插入主窗口的菜单中,或将替换部分或全部的父窗口菜单。
进行菜单融合需设置的两个属性:
● 窗体的Menu属性
● 菜单项的GroupIndex属性
Menu属性定义窗体的活动菜单,而菜单融合只对活动菜单进行。 如果窗体有多个菜单部件,运行时可通过以下代码进行改变:
Form1.Menu := SecondMenu;
GroupIndex属性决定出现在菜单条中各菜单项的位置,在菜单融合中,GroupIndex 将决定融合菜单是插入还是替换主窗体菜单条中的菜单。
GroupIndex的缺省值是0,可以用下规则确定其值:
1. 数值越小,菜单的位置越靠左。
例如:GroupIndex为0的菜单将出现在菜单条中的最左端。随着GroupIndex数值的增大,菜单项依次向右排列。
2. 若需替换主菜单中的某一菜单项,则将子菜单相应菜单项的GroupIndex设为与之相等的值。这条规则适合一个或多个菜单项。例如,主菜单中的"Edit"菜单项的GroupIndex 的值为1。将子菜单的一个或多个菜单项的GroupIndext的值设为1,则在运行时,这些菜单项替换主窗口的"Edit"菜单。
将同一窗体的多个菜单项的GroupIndex设为相同值, 原有的排列顺序在菜单融合时将保持不变。
3. 若要在菜单融合时插入菜单项,需在主菜单中预留数值“位置”。例如,主菜单的两菜单项数值为0,5,则子菜单GroupIndex数值为1,2,3,4的菜单在融合时将插入其中。
在使用MDI界面时,用户通常会打开多个窗体。为了使用户方便地进行窗体切换,常设有一个进行切换的菜单项.此菜单列出了打开窗体的名称,当用户选择其中的一个时,程序进行相应的窗体切换。在Delphi的MDI设计时,可非常方便地实现这一功能。方法是将父窗口的WindowMenu设置成该菜单项的名字即可。