1、当然是动态的好,
2、CLOSE方法先调用FREE方法来释放资源
3、用ACTIVE:=CAFREE来释放

解决方案 »

  1.   

    1、不知道你的具体意思???如果你在程序加载时就创建了newform的话当然只要newform.show
    如果没有,当然必须要先newform:=tnewform.create(self)
    2、close只是一般的关闭窗体,release会释放该窗体
    3、在一个窗体内创建的对象都是属于这个窗体的,一般来说,是属于tform这个类的,tform释放时这些对象都会释放
      

  2.   

    赫赫,在DFW也回答你了~~~~~~~~~~~~~
      

  3.   

    icefire_cwj()和zzutlink(来溜达)已经回答了你的三个问题。
    补充一点:可以在NewForm里写一个调用过程:
    procedure UseNewForm;
    begin
      if not Assigned(NewForm) then
        NewForm:=TNewForm.Create(Application);
      NewForm.Show; 
    end;
    然后在onClose 中写:
    procedure TNewForm.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=caFree;
    end;调用时直接写:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      UseNewForm;
    end;
    就可以了。
      

  4.   

    多谢各位大虾拔刀相助
    如果我在一个窗体内动态的创建了一个对象,如一个listview,我在窗体的formclose方法中
    需要调用listview.free吗?
      

  5.   

    不用了吧,在窗体关闭时加上Action:=cafree就可以了吧
      

  6.   

    在close方法中,会调用CloseQuery,然后调用doclose,doclose会调用onclose,如果onclose中Action := CaFree,那么会调用release,来释放资源,当然release使用PostMessage方法,此方法把关闭消息,放在消息队列的最后,窗口并不是马上关闭。关闭窗口的方法有好几种,看你的需要了。