2.子窗体的OnClose事件中Antion:=CaFree;

解决方案 »

  1.   

    1. ctrl + shift + F11编辑打开窗体创建方式:子窗体你要手工自己创建。
    2. 子窗体的‘关闭‘可以选择为3中方式 ,Action := caminimize; action := cafree; action := canone(取消)MainForm有个 MDIChildren[i]属性,用它来做控制、察看子窗体的状态很方便。
      

  2.   

    感谢Laza的热心帮助,但问题没有解决,请详细解释
      

  3.   

    字窗口的onClose事件中写如下代码一定行的
    Action :=caFree;
    什么叫真正的MDI程序?
    还有假的?
    如果你原意用API来写,一定假不了
    :)
      

  4.   

    1.renzhm,你创建窗体时,Delphi会自动把CreateForm放入Dpr中,
    你去看程序的Dpr文件,去掉MDI子窗体的CreateForm代码。只留下MDI主窗体。当你要显示子窗体时,再动态创建,例如
    if Not Assigned(FormX) then
      FormX:=TFormX.Create(Application);
    FormX.Show。即可
    2.ChildFrm不能关闭,只能最小化.这个问题上面的GG已经回答,不再写了.
      

  5.   

    感谢eastroc的帮助,问题又来了:如何避免子窗口的多次打开(create),你的方法将创建若干
    子窗体.
    问题解决,马上给分!!!
      

  6.   


    for i:= 0 to MDIChildCount-1 do
    begin
      if MDIChildren[i].handle <> nil then
         MDIChildren[i].Create(Application);
      

  7.   

    for i:= 0 to MDIChildCount-1 do
    begin
      if MDIChildren[i].handle <> nil then
        MDIChildren[i].Create(Application);
    end;  
      

  8.   

    for i:= 0 to MDIChildCount-1 do
    begin
      if MDIChildren[i].handle = nil then
        MDIChildren[i].Create(Application);
    end; 不好意思,老出错!
      

  9.   

    To renzhm(戴尔飞):
      如何妨止子窗口不重复打开。
      
      新建子窗口代码:
      if not assigned(ChildFormName) then 创建子窗口;  在子窗口的FormDestroy事件中写上:
      ChildFormName:=nil;