一个Delphi的MDI应用程序,在打开MDI窗口时,MDI子窗体菜单覆盖了父窗体的菜单,请问高手这是什么原因造成的?

解决方案 »

  1.   

    应该是你的菜单项的GroupIndex属性设置有问题    父窗口的菜单应作为应用程序主菜单。如果子窗口有菜单, 则当子窗口在运行获得焦点并最大化时,子窗口的菜单项将融合父窗口菜单。  菜单融合是指程序运行过程中,子菜单与父窗口菜单的相互作用。 如当子窗口获得焦点时,子窗口的菜单或插入主窗口的菜单中,或将替换部分或全部的父窗口菜单。  进行菜单融合需设置的两个属性:  ● 窗体的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的菜单在融合时将插入其中。
      

  2.   

    修改GroupIndex的值就没问题,谢谢。