怎样关闭MDIChildren窗体,
我试用了 Form1.MDIChildren[0].close;会有错!
若用 Action:=acFree; 也会有错,提示是:不兼容的类型:TBasicAction and TCloseAction
若直接用 Form1.close; 则是把 子窗体最小化到父窗体的左下角,我想把它关闭而不是
最小化到父窗体的左下角,到底要怎么做?
谢谢!!!

解决方案 »

  1.   

    这样用:
    procedure Tfrm.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      frm.Close;
      Action:=CaFree;
    end;不要把Action包含在with 语句内
      

  2.   

    //子窗体
    procedure TForm2.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
      Action := caFree;
      Form2:= nil;
    end;
    //主窗体
      for i := Form1.MDIChildCount -1 downto 0 do
      begin
        Form1.MDIChildren[i].Close;     
      end;
      

  3.   

    mdichildren默认是只是最小化的,要用action:=cafree才行。
      

  4.   

    procedure TForm2.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
      Action:=caFree;
      Form2:=nil;
    end;
      

  5.   

    在OnClose 事件中加
    action := cafree就可以,我就是这么用的,没问题
      

  6.   

    我就是用 Action:=acFree; 会有提示是:不兼容的类型 TBasicAction and TCloseAction  这样的错误!
    这是怎么回事!
      

  7.   

    在OnClose事件中加
    Action := caFree;
    是唯一正确的方法。提示“不兼容的类型”是因为你引用的Action变量不是OnClose事件中定义的参数变量。
    前面几位居然在类的方法中直接引用的类的实例,这是应该尽力避免的,虽然这样做并不必然导致问题。