procedure TMainForm.CreateMDIChild(const Name: string);
var
  Child: TMDIChild;
begin
  { create a new MDI child window }
  Child := TMDIChild.Create(Application);
  Child.Caption := Name;
   if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);
end;procedure TMainForm.FileNew1Execute(Sender: TObject);
begin
  CreateMDIChild('NONAME' + IntToStr(MDIChildCount + 1));
end;procedure TMainForm.FileOpen1Execute(Sender: TObject);
begin
  if OpenDialog.Execute then
    CreateMDIChild(OpenDialog.FileName);
end;procedure TMainForm.HelpAbout1Execute(Sender: TObject);
begin
  AboutBox.ShowModal;
end;procedure TMainForm.FileExit1Execute(Sender: TObject);
begin
  Close;
end;这里根本就没有对create出来的子窗体进行释放。现在有两个问题
1,程序退出的时候,是不是会自动释放子窗体占用的空间。
2,如果不会,怎么释放!

解决方案 »

  1.   

    //在子窗体里关闭时Free掉
    procedure TClassChildFormDefine.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
      Action := caFree;
    end;procedure TClassChildFormDefine.FormDestroy(Sender: TObject);
    begin
      ClassChildFormDefine :=nil;
    end;
      

  2.   

    class TClassChildFormDefine???
     Child := TMDIChild.Create(Application);
    难道我要重新定义一个类??? 
      

  3.   

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

  4.   

    在子窗体中写出事件:
      procedure CreateChildForm(Const AName:String);
        var
        child:TChildForm;
      begin
        child:=TChildForm.create(Application);
        child.Caption := AName;
      end;在主窗体中调用 这个过程就可以出来,不用再child.show.
    要关闭子窗体,就在onclose中用Action:=caFree就可以了。其它的不用操作
      

  5.   

    ClassChildFormDefine 是窗体的NAME...
      

  6.   


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