如上

解决方案 »

  1.   

    怎么感觉一样呢?
    Create(self)由管理它的窗体释放(其实我理解是调有它的窗体释放)
    Create(nil)就学要由你自己释放了
    Create(Application) 是由你的程序来释放的
      

  2.   

    参数是当前创建对象的拥有者owner,也就是创建对象会随着这个拥有者的释放而释放self :指当前窗体,即窗体释放以后对象也就释放了
    nil  :没有拥有者,需要程序设计者手动释放
    Application :工程释放以后,对象释放
      

  3.   

    还是有区别的
    create(self):由自己释放
    create(nil):必须手动释放
    create(application):窗体不需要自己释放,由Application负责释放
      

  4.   

    看看我的这个贴子把,讨论Create的
      

  5.   

    http://community.csdn.net/Expert/topic/3335/3335891.xml?temp=.9843714
      

  6.   

    肯定是有区别的呀
    根据VCL FrameWork TForm 是从 TComponent继承下来的
    其中 Constructor TComponent.Create(AOwer:TComponent);Vitrual;
    就是个虚方法其中AOwer就是指定控件的所有者
    如果你是在当前窗体中加如控件,但是不知道什么时候释放,此时就可以
    用Create(Self)交给Delphi编译器去管理对象的生命周期,这是就不用手动去释放对象了。
    如果你知道对象的生命周期此时你可以用Create(nil)自己手动去释放对象了
    如果你要创建的对象的生命周期是整个的应用程序此时你就要使用
    Create(Application)交给应用程序去管理了对象的释放机制了
      

  7.   

    想必你有 Create后, 手动 free的习惯.好习惯.vcl帮你做了太多....
      

  8.   

    子窗體還是自己寫代碼Create,然後手動Free好.
      

  9.   

    self
    nil
    Application
    就不一样,好好体会这几个词就不同了。
      

  10.   

    X:=TX.create(XX);
    那么当XX被释放时,XX会帮你释放X,这样你就不需要自己释放X了,如
    Form1:=TForm1.create(Form2);
    那么当Form2 free时,它就会自动帮你释放Form1,你就不用自己释放Form1了。