B balaschen Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-12 #2 当只有Self能用时只能用Self,只有Application能用时只能用Appliaction。 蛐蛐说:这不是废话吗!
S Suvi Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-12 #4 self, 类的隐含指针,如在一个窗口程序的过程中: TForm1=class(TForm),self指的是TForm1, Application:TApplication <-- TComponent <-- TPresident <--TObject Form :TForm <-- ... <--TWinControl <--...TObject
self, 类的隐含指针,如在一个窗口程序的过程中: TForm1=class(TForm),self指的是TForm1, Application:TApplication <-- TComponent <-- TPresident <--TObject Form :TForm <-- ... <--TWinControl <--...TObject
Y yh Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-12 #6 Suvi说的对。Self是变动的,当你实作不同类的,如:你制作一个Form,或你 做一个自制的控件,当引用Self时就是引用你正在实作的类;而Application 是固定的,就是指你正在作的应用程序,即在一个应用程序当中,Self在不同的 单元(不同的位置)的含义是不同的,而Application则是相同的。
Suvi说的对。Self是变动的,当你实作不同类的,如:你制作一个Form,或你 做一个自制的控件,当引用Self时就是引用你正在实作的类;而Application 是固定的,就是指你正在作的应用程序,即在一个应用程序当中,Self在不同的 单元(不同的位置)的含义是不同的,而Application则是相同的。
蛐 蛐蛐 Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-12 #7 可什么情况只能用 APPLICATION 又什么情况只能SELF 我都试过, 可找不到有什么差别。
飞 飞龙在天 Unregistered / Unconfirmed GUEST, unregistred user! 2001-06-12 #9 除了楼上几位说的区别,用 Self 和用 Application 还有一点区别,就是对象释放的时间: 大家都知道,TComponent.Create的声明形式如下 constructor Create(AOwner: TComponent); 参数AOwner为所创建对象的所有者。 而在释放一个对象时,Delphi会自动释放此对象拥有的所有对象,例如: MyObj2 := TMyObj2.Create(MyObj1); MyObj2的所有者是MyObj1,在执行MyObj1.Free的时候,MyObj2会被自动释放。 所以当你以Application为参数创建对象的时候,假如你不去主动释放它,它会在Application对象 释放的时候(也就是程序结束的时候)被释放。 当以Self为参数创建对象的时候,假如你不去主动释放它,它会在这段代码所在的对象释放的时候被 释放,一般是TForm,也可能是其它类型的对象。
除了楼上几位说的区别,用 Self 和用 Application 还有一点区别,就是对象释放的时间: 大家都知道,TComponent.Create的声明形式如下 constructor Create(AOwner: TComponent); 参数AOwner为所创建对象的所有者。 而在释放一个对象时,Delphi会自动释放此对象拥有的所有对象,例如: MyObj2 := TMyObj2.Create(MyObj1); MyObj2的所有者是MyObj1,在执行MyObj1.Free的时候,MyObj2会被自动释放。 所以当你以Application为参数创建对象的时候,假如你不去主动释放它,它会在Application对象 释放的时候(也就是程序结束的时候)被释放。 当以Self为参数创建对象的时候,假如你不去主动释放它,它会在这段代码所在的对象释放的时候被 释放,一般是TForm,也可能是其它类型的对象。