默认分类 2009-08-05 14:59:31 阅读265 评论0 字号:大中小
From.create(参数)
参数有以下几种:
Application:你的控件的父级是主程序,所以他的级别最高.
Self:你的控件的父级是当前窗口,他关闭你也关闭.
Sender:你的控件的父级是当前对象.
Handle:你的控件的父级是此句柄.
Nil:无定义.生成的独立窗体需代码释放。
一般说来,Delphi类的构造方法在TComponent前是不用重载的,而
TComponent后如果在构造时需要初始化字段就必须重载构造方法(当然参
数也不能变,固定的是AOwner:TComponent)。这是因为每一个TComponent
类中都有一个子部件表,用来当该部件有所变化时通知子部件,包括以上
各位大虾所述的与释放有关的操作。这样很多的子部件构成一棵部件树,
牵一发可动全身。
TComponent有两级祖先,TPersistent和TObject,TPersistent与字段的
存贮有关,构造方法也基本上不用重载(TPersistent的后代例外),而
TObject根本就没有构造方法,无从重载,所以可以自己定义参数或者根本
没有参用数。这便是Create的参数可以千奇百怪的原因。
举几个例子:
TList.Create; // inherited from TObject
TException.Create(const Msg: string);//inherited from TObject
TFont.Create; // inherited from TPersistent
TTreeNode.Create(AOwner: TTreeNodes);//inherited from TPersistent;
TListItem.Create(AOwner: TListItems);//inherited from TPersistent;
TForm.Create(AOwner: TComponent);//inherited from TWinControl;