A antee Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-08 #1 请问有何区别,应使用哪一种较好。 比如TForm.Create(Application)
B bigroute Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-08 #2 同样, 如果想把窗体建立在某些构件的也可以。 Form1 :=Tform1.Create(Panel);
X xuejinlong Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-08 #3 你说呢?有些地方必须用TForm.Create(Application); 如果用Application的话,当Application结束时,TForm会被自动Free掉; 而用Self,nil呢?当然要自己解决啦。在Form.OnClose 里自己释放就行了。
你说呢?有些地方必须用TForm.Create(Application); 如果用Application的话,当Application结束时,TForm会被自动Free掉; 而用Self,nil呢?当然要自己解决啦。在Form.OnClose 里自己释放就行了。
C catchan Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-08 #4 只是在内存管理上的区别,似乎nil需要手动释放,而Application不需要。 你试一下吧!
S svw0506 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-08 #5 我只知道二点区别,就是用 with TXXX.Create(application) do begin // end; 这种结构时,当你改变TXXX的名称的时候,改动会秀小,而如果用 XXX:=TXXX.Create(Application) ; with xxx do begin // end; 的时候,你要改动的地方就多一点 另外,如果你用XXX:=TXXX.Create(nil); 时,如果你的窗体是模式调用还好,直接Free掉就可以, 不然就是的XXX的OnDestry事件里调写XXX:=nil;
我只知道二点区别,就是用 with TXXX.Create(application) do begin // end; 这种结构时,当你改变TXXX的名称的时候,改动会秀小,而如果用 XXX:=TXXX.Create(Application) ; with xxx do begin // end; 的时候,你要改动的地方就多一点 另外,如果你用XXX:=TXXX.Create(nil); 时,如果你的窗体是模式调用还好,直接Free掉就可以, 不然就是的XXX的OnDestry事件里调写XXX:=nil;
猛 猛禽 Unregistered / Unconfirmed GUEST, unregistred user! 2002-08-08 #6 用Application作参数的话,在Application被Free时会先Free掉XXX 但用Nil的话就不会,不过Application被Free,程序也就退出了,所以XXX还是会被Free, 只是在Application之后,如果XXX的析构中做了什么事,可能就会出错了, 除非你在Application被Free之前把XXX给Free掉。
用Application作参数的话,在Application被Free时会先Free掉XXX 但用Nil的话就不会,不过Application被Free,程序也就退出了,所以XXX还是会被Free, 只是在Application之后,如果XXX的析构中做了什么事,可能就会出错了, 除非你在Application被Free之前把XXX给Free掉。