在程序中经常看到:
form1:=TForm.create(application);
或者
form1:=TForm.create(self);
或者
form1:=TForm.create(nil);首先它们的区别是什么?一般分别需要应用在什么场合?分别对程序的执行效率有什么利弊的影响?有什么需要注意的地方吗?请说的详细一点

解决方案 »

  1.   

    唯一的区别就是form1.owner不同。owner是负责在自己释放的时候释放自己成员的。
      

  2.   

    物主不一样,
    form1:=TForm.create(application);form1属于application,如果你自己没有释放此窗口,退出程序时application会释放掉他的孩子,当然也包括application。form1:=TForm.create(self);form1属于父窗口,如果你自己没有释放此窗口,父窗口退出时,会帮你释放掉。
    所有的物主对象都维护着一个自己的拥有对象的列表。
    form1:=TForm.create(nil);  最好不要这样用,如果这样用了,则必须自己想着释放掉,因为他的属主是空。 form1.free;
    不过不要以为有物主对象帮你释放掉,你就可以不管了,永远要记住,自己建立的对象在不用的时候最好自己释放掉,因为你不知道物主对象什么时候会释放。养成一个好习惯。
      

  3.   

    最好用form1:=TForm.create(self);如果不是在窗口中建立另一个窗口,则用form1:=TForm.create(application); 
    只要加入单元 forms 就可以用引用application,除非特殊情况不要用form1:=TForm.create(nil);  
    我就从来没有用过。