请问Application、Self和nil有什么区别?(45分)

  • 主题发起人 主题发起人 11830
  • 开始时间 开始时间
1

11830

Unregistered / Unconfirmed
GUEST, unregistred user!
请问我在动态建立控件时使用的Application、Self和nil有什么区别
TempAQ_GetAllSum:=TADOQuery.Create(Application);

TempAQ_GetAllSum:=TADOQuery.Create(Self);

TempAQ_GetAllSum:=TADOQuery.Create(nil);
 
我是这么理解的( 不一定说的对 ):
Application 是应用程序的属性意为在应用中创建ADOQUERY对象
Self 很简单,就是创建自己
nil 为空?这样也可以吗?没试过
 
我是这么理解的( 不一定说的对 ):
Application 属于此应用程序的对象
Self 属于当前窗体
nil 自成一体
 
谢谢你们的回复!
哪它们在使用上有什么区别呢?
我现在也不清到底用哪个好,有时用application,有时用nil。
请问您们都怎么用这个?
 
TADOQuery.Create(AOwner: TComponent);是对其祖先类TComponent的构造器的覆盖。
其中AOwner是指你所创建的对象的拥有者。如本例,假如是Application,那么此时拥有者
为整个应用程序对象Application。同理self则拥有者为当前窗体对象,nil则不存在拥有者。
其实,你在写代码时这几种方式都可以,区别仅在与:当你用Application做拥有者时,那么
该对象假如你不是用Free方法手动释放内存的,那么就要等到Application对象被释放时,它
才会一起被释放;而你用self时,则要等到该窗体对象释放时,它才一起被释放;nil,则它
要等到整个应用程序被释放时,它才会被释放。
不过,你应尽可能养成不用时释放对象的习灌,以防出现内存泄漏!
 
Archerfl说的很正确
 
接受答案了.
 
好像明白了,谢谢!
 
后退
顶部