首先,Form1在Close的时候,调用了Form1.release;
然后,我在Form2里面,发现Form1并不是nil,怎样才能知道一个Form已经被release掉了?

解决方案 »

  1.   

    if Form1<>nil then Form1.free;
      

  2.   

    我没发现什么好办法,我用 FindWindow 找这个窗口,没找着就是Free掉了
      

  3.   

    if assigned(Form1) then Form1.free;
      

  4.   

    if assigned(Form1) then Form1.free;
      

  5.   

    assigned(Form1) 和Form1<> Nil如果表单是你自己创建的,你在释放的时候还必须加一句:Form1:=Nil;
    不然的话,你的 Form1<> Nil 永远也等不到他为NIL
      

  6.   

    以上各位需要一个前提
    在Form1 OnClose中加上
    Form1 :=nil;
    但是,不知道能不能在该事件上实现,
    反正就是那个意思。
      

  7.   

    if Form1<>nil then FreeAndNil(Form1);
      

  8.   

    if assigned(Form1) then 
    begin
      Form1.free;
      form1:=ni;
    end;
      

  9.   

    安全的做法
    if Form1 <>nil then if assigned(Form1) then ...
      

  10.   

    ***************************************************************
    GoldShield(金盾) :assigned(Form1) 和Form1<> Nil如果表单是你自己创建的,你在释放的时候还必须加一句:Form1:=Nil;
    不然的话,你的 Form1<> Nil 永远也等不到他为NIL
    ***************************************************************
    你说的对,但是我的release是在Form1的Close时候做的,我怎么才能把Form1设置为nil?
    因为Close是base做的,所以我这时候找不到Form1
      

  11.   

    //在创建新窗体时这样做:
    var
         Form:TForm;
    begin
         Form:=TForm(Application.FindComponent('Form2'));
         if Form<>Nil then
         begin
              Form.Show
         end
         else
         begin
              TForm2.Create(Application).Show;
         end;
    end;
    //在每个窗体的Close事件中这样写:
    Action:=caFree;
      

  12.   

    wizardqi(男巫) 说的正确!在默认的时候close是把窗体隐藏起来的!如果你在close事件里面加
    action:=caFree的话,这个是说明在关闭的时候把资源释放掉!
      

  13.   

    如果要手动释放资源的话必须在Form1.release;后加form1.free;