一,不要让程序自动创建子窗口,把那相关的Application.CreateForm(<子窗口>)那一句
删掉.创建子窗口,
在菜单事件中加入类似代码:
  childform.Create(Application);
   childform.Show();二,在子窗口里CLOSE事件中
   Action := caFree;//自动释放子窗体实例
三,把子窗口里面的菜单项的Groupindex的值设成与主窗口菜单项中Groupindex
值设成不同就可以了这可以决定它们的顺序。

解决方案 »

  1.   

    解决子窗口自动出现:
    可在程序中检查MDI主窗口的开始事件或菜单中的新建功能,查找建立子窗口的语句,把它们去掉可以取消自动建立子窗口。
    解决子窗口关闭:
    可在子窗口的ONCLOSE事件中,将ACTION置为CAFREE。
    加菜单:
    在建立子窗口中菜单时,将其菜单项的GROUPINDEX值置为大于MDI主窗口菜单中菜单项中的最大的GROUPINDEX,可以将菜单结合。
      

  2.   

    用菜单:Project->Options
    在Forms页,将auto-CreateForms中的
    ChildForm转移到 available Forms中
    程序运行时不会每次出现子窗口
    但要显示子窗口就要
      ChildForm := TChildForm.Create(Self)