由于关闭窗口时我使用FORM.FREE
FORM:=NIL;
关闭窗口时会出错,如果CLOSE事件中没有代码就不会出错了.
但这样占内存.
于是我想释放窗体内的所有组件.
求代码

解决方案 »

  1.   

    如果使用动态建立窗口,Free就不会出错了var
      Form1: TForm1;
    begin
      Form1 := TForm1.Create(Application);
      try
        Form1.Show;
      finally
        Form1.Free;
      end;
    end;
      

  2.   

    var
      Form1: TForm1;
    begin
      Form1 := TForm1.Create(Application);
      try
        Form1.ShowModal;
      finally
        Form1.Free;
      end;
    end;
      

  3.   

    如果非要这样做可以使用在onclose事件中加入
    action := cafree;//form is closed and all allocated memory for the form is freed
    xxForm := nil;
      

  4.   

    释放窗体内的所有组件?如果你是静态放在form上的,那么FORM释放时全部自动释放。如果时动态创建的,只要创建时指定owner是form,那么form释放时也会跟着form释放。如果是create(nil),你就得自己想办法了....还有,我怀疑楼主的form.free是写在窗体事件里的,这样肯定出错。解决方法如zhu_jiang() 说的用caFree.
      

  5.   

    er.. 貌似有个地方说得不够完善,owner指定form上的其它控件,控件也可以自动释放,总而言之是owner释放的时候,它会通知它下属的全部控件释放。