首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TCompanent构造函数,函数体什么样子?该如何处理

2012-03-20 
TCompanent构造函数,函数体什么样子???一. vcl的类TCompanent如下:class PASCALIMPLEMENTATION TComponent

TCompanent构造函数,函数体什么样子???
一. vcl的类TCompanent如下:

  class PASCALIMPLEMENTATION TComponent : public TPersistent 

  { typedef TPersistent inherited;

  private:

  TComponent* FOwner;

  public:
__fastcall virtual TComponent(TComponent* AOwner);
  
  __property TComponent* Owner = {read=FOwner};


  ...

  };

二. c++ builder 下写的 程序:

  TButton *Button1=new TButton(Panel1);

三. 提问:

  1 . __fastcall virtual TComponent(TComponent* AOwner);具体的函数体是什么???

  2. 二.中的Panel1先传给__fastcall virtual TComponent(TComponent* AOwner)的参数

  TComponent* AOwner,__fastcall virtual TComponent(TComponent* AOwner)再在其内部用关键字inherited将

  TComponent* AOwner传给 TComponent* FOwner,最后将TComponent* FOwner传给__property TComponent* 

  Owner = {read=FOwner}的Owner, 不知道对不对;




[解决办法]
//Delphi中的TComponent的构造函数是这样的,你贴的是C++ Builder的
constructor TComponent.Create(AOwner: TComponent);
begin
FComponentStyle := [csInheritable]; //设置控件可继承的样式
if AOwner <> nil then AOwner.InsertComponent(Self); //通知控件所有者将自己加入控件列表中,以便以后管理
end;

TButton *Button1=new TButton(Panel1); 
Panel1被传到TButton的构造函数中,然后,在构造函数中调用TComponent(即Panel1)的InsertComponent将自己加入到自身的管理列表中。在InsertComponent中先进性了一些验证,接着,将AComponent(即Button1)的Owner(即TButton内部的FOwner变量)设置为self(即Panel1)。

这些在classes.pas单元(C++ Builder中对应的是classes.hpp吧)。

热点排行