中易网

delphi的TComponent中定义FOwner: TComponent;

答案:2  悬赏:70  
解决时间 2021-02-19 16:55
delphi中
类TComponent中定义的第一句
TComponent = class(TPersistent, IInterface, IInterfaceComponentReference)
private
FOwner: TComponent;//这个是怎么理解的啊,本人看李维的VCL到了108页就看不下去了,为什么类的定义中就可以定义此类,作用是什么啊

在《Delphi COM深入编程》中第一章的接口中就有一个例子,其中就有个接口有类似的定义,不明白应该怎么理解,有大侠会的指点一下吧.
type
ICompare = interface
['{DDFE0840-E8FB-11D2-9085-0040F6741DE2}']
function CompareWith(ACompare: ICompare; ASortBy: Integer): Integer;
end;
最佳答案
TComponet中的FOwner是用于在组件创建时指定“属主”用的,属主的作用是在于当属主Free的时候自动Free掉其下的所有组件。例:
var
lbl: TLabel;//此处TLabel继承自TComponent
begin
lbl ;= TLabel.Create(Form1);
...
lbl.Free;//通常我们会加上这句,但这里加上就错了
//Delphi会在Form1销毁的时候自动将lbl销
//毁掉
end;
这里TLabel就相当于TComponent,而Form1是TForm类的对象,TForm也是继承自TComponent,既然是这样实现,那在类的定义里楼主所说的情况应该不难理解了吧~~

ICompare = interface //声明一个接口ICompare
['{DDFE0840-E8FB-11D2-9085-0040F6741DE2}'] //全局唯一的ID,用于识别不同的接口

function CompareWith(ACompare: ICompare; ASortBy: Integer): Integer; //此接口所拥有的“动作”,接口本身不实现,由实现接口的类实现此“动作”
全部回答
TComponent类的FOwner: TComponent;是说FOwner是这个类的对象,是为组件中插入的组件作准备用的(可能是这样,呵呵) ICompare接口中的ACompare: ICompare;可能是同一类中的对象作比较用的,面向对象的东西嘛——我也不是很明白,呵呵
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求名字作品
孕妇生产时,可否自己在手术知情同意书上签字
大众彩瓦地址有知道的么?有点事想过去
凯旋街/南环路(路口)地址在哪,我要去那里办
如何激发孩子的学习潜能观后感
有没有带点肉的小说
老九门2930集
平阳文化城这个地址在什么地方,我要处理点事
perl 的卸载与安装
网络在线访谈看完后如何点赞
又一家乳品店地址有知道的么?有点事想过去
改病句:汽车在广阔的马路上奔驰
传播中国酒文化靠宣传还是靠实力
怡馨家园东门在什么地方啊,我要过去处理事情
蓝铂厂店这个地址在什么地方,我要处理点事
推荐资讯
奎屯市新体育场地址在什么地方,想过去办事
田园综合体”是个什么鬼
杭卅负十号柴油哪里有
找一本小说,女主是穿越到古代的刚出生的婴儿
大家怎么样理解大人常对小孩说的一句话“等你
糖类抗原ca153:32.37,正常值:<25。细胞角
本人30岁男,最近看到康乐一生,想问下怎么缴
绝味卤菜NO.2我想知道这个在什么地方
笔记本鲁大师温度压力测试cpu90度,显卡56度
8800GT和GT210哪个好?
烤吧地址在哪,我要去那里办事
去香港旅游手机要重新弄么?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?