用show方法显示一个窗体,当调用close关闭这个窗体时,实际上只是在hide这个窗体,该窗体的实例一直在内存中存在。当close时,应该如何同时Free该窗体呢?

解决方案 »

  1.   

    显示窗体的时候,你这样做:
    try
      form2:=Tform2.create(self);
      form2.show;
    finally
      form2.free;
    end;
      

  2.   

    在FORMCLOSE事件中
    写如下语句
      action:=CaFree;
      

  3.   

    这样在FORM  关闭时
    就会自动FREE它自己
      

  4.   

    function RunShowModal(AForm:TForm;AFormClass: TFormClass;AFormCaption:String):Boolean;
    begin
       Result:=false;
       if not Assigned(AForm) then AForm:=nil;   AForm:=AFormClass.Create(Application);
       try
           AForm.Caption:=AFormCaption;
           AForm.ShowModal;
       finally
           AForm.Free;
           AForm:=nil;
        end;
      Result:=true;
    end;
      

  5.   

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      action:=cafree;
      form1:=nil;
    end;
      

  6.   

    try
      form2:=Tform2.create(self);
      form2.show;
    finally
      form2.free;
    end;
    //这样会一闪而过,要用2楼的方法。如果是showmodal建议这种方法。
      

  7.   

    多谢 Spqk005(舍甫琴柯) !!
      

  8.   

    procedure form1.onclose(sender:Tobject);
    var
        handle:Thandle;
    begin
        findhandle(handle,form2);
        if handle<>0 form2.free;    不是findhandle就应该是findwindows 自己试一试