不要在 子窗口 的 OnClose 事件中做!

解决方案 »

  1.   

    你说的 OnCloseQuery 指的是 子窗口的事件吧?我就是想当 子窗口关闭的时候能触发主窗口的事件,同时,又不需要另外在子窗口增加代码
      

  2.   

    我在 MDI 主窗口用变量 frmList:TStringList 来保存打开的 MDIChild 的窗口信息,其他的都没有问题了,就是需要在关闭 子窗口 的时候自动触发操作把 frmList 对应的信息删除掉,我现在是在 子窗口 的 OnClose 事件里面写的,但显然这样不太好。
      

  3.   

    在子窗体的OnCloseQuery事件里写吧!
      

  4.   

    我在 MDI 主窗口用变量 frmList:TStringList 来保存打开的 MDIChild 的窗口信息,其他的都没有问题了,就是需要在关闭 子窗口 的时候自动触发操作把 frmList 对应的信息删除掉,我现在是在 子窗口 的 OnClose 事件里面写的,但显然这样不太好。换个思路吧,MDI主窗口的的MDIChildCount属性中保存中目前打开着的MDI窗口的数量,MDIChildren则是指向这些MDI窗口的TForm类型数组。不需要你自己用代码来维护这个frmList的。
      

  5.   

    如果你想在主菜单中显示当前的MDI子窗体的名称,则只需要设置MDI主窗体的WindowMenu属性,将它设置为主菜单中的某个菜单项就行了。如果你想实现MDI子窗体的平铺、层叠等功能,则只需要调用MDI主窗体的Tile、Cascade方法。
      

  6.   

    使用 MDIChildCount 或者是 WindowMenu 属性我都是知道的只是我想完全在 主窗口 来控制 MDIChild 的建立和释放。
    我还是自己去看看 WindowMenu 实现的代码吧(看 Delphi 里面的源码实在是晕)
      

  7.   

    我想问一下delphi里面不用向导生成MDI FORM,要实现打开子窗体时把子窗体的name显示到菜单栏的list里该什么做??就是在菜单栏可以看到当前打开窗体的list
      

  8.   

    MainFrm.WindowMenu := aMenuItem