TComponent - C++ Builder

C++ Builder 参考手册 ➙ System::Classes ➙ TComponent


System::Classes::TComponent 是所有组件的公共父类。

  • System::Classes::TComponent 简介
  • System::Classes::TComponent 成员
    • 属性
    • 方法
    • 事件
    • 数据

一. System::Classes::TComponent 简介

System::Classes::TComponent 是所有组件的公共父类。

  • 继承关系:
    System::TObject
    ⠀╙ System::Classes::TPersistent
    ⠀⠀⠀┗ System::Classes::TComponent
  • 头文件:#include <System.Classes.hpp>
  • 命名空间:System::Classes
  • 控件 TControl 是从 TComponent 继承的子类,所以所有的控件也都是组件,组件包含了所有的控件;
  • 从 TControl 继承的控件,运行的时候能够显示出来,这是 TControl 增加的功能,而 TComponent 并没有处理显示的代码;
  • TComponent 是不同框架 (VCL/FMX) 都公有的类,在 System.Classes.hpp 里面,而 TControl 在不同的框架里面有不同的实现,例如 Vcl::Controls::TControl 或 Fmx::Controls::TControl;
  • 一般情况编写不同框架有不同实现的控件,都是根据 Vcl::Controls::TControl 或 Fmx::Controls::TControl 来分组和注册框架不同而类名相同的控件的,如果不同的框架实现相同的控件,即各个框架公有的,都是从 TComponent 继承过来的组件。
  • 如果是继承 TComponent 做的不需要显示出来的组件,在不同的框架里面有不同的实现,需要根据 TControl 分组来区分框架,例如 ActivateClassGroup(__classid(Fmx::Controls::TControl));

二. System::Classes::TComponent 成员

1. System::Classes::TComponent 属性

属性 类型 说明
__published:    
Name TComponentName 组件的名称
Tag NativeInt 储存一个 NativeInt 类型的数据
public:    
ComObject _di_IInterface 控件的 COM 接口对象
Components TComponent *[int Index] 这个组件容纳的第 Index 个子组件
ComponentCount int 这个组件容纳的子组件的个数
ComponentIndex int 这个控件是他的拥有者的第几个子组件
ComponentState TComponentState 组件的状态
ComponentStyle TComponentStyle 组件的样式
DesignInfo int 提供给画面编辑器的信息 (设计时的位置)
Observers TObservers * 组件 LiveBindings 的 TObservers 对象
Owner TComponent 组件的拥有者
VCLComObject void * 组件的 COM 组件对象

2. System::Classes::TComponent 方法

方法 说明
public:  
BeforeDestruction 检查并调用 Destroying 方法
BeginInvoke 异步调用 AProc 或 AFunc
DestroyComponents 销毁所有容纳的子组件
Destroying 指示这个组件和它所有的子组件都将被销毁
EndFunctionInvoke 等待异步执行的函数的返回值
EndInvoke 等待异步执行完成
ExecuteAction 执行一个 Action
FindComponent 通过名称查找子组件
FreeNotification 把这个组件将要被销毁的信息通知给 AComponent
FreeOnRelease 调用 COM 接口的 Release 方法时,会调用这个方法
GetEnumerator 返回一个可以枚举子组件的对象
GetParentComponent 返回 Parent (容器) 组件
GetNamePath 返回在 Object Inspector 属性面板里面的名称
HasParent 获取这个组件是否放在了容器里面
InsertComponent 添加一个子组件
IsImplementorOf 返回当前组件所支持的 COM 接口的引用
operator () 类型转换操作符,转为 _di_IInterface 类型
或者 _di_IInterfaceComponentReference 类型
ReferenceInterface 建立或移除内部链接来通知这个组件
RemoveComponent 移除一个子组件
RemoveFreeNotification 把 FreeNotification 的通知信息去掉
SafeCallException 处理 COM 接口的异常
SetSubComponent 设置或清除 ComponentStyle 里面的 csSubComponent 样式
TComponent 构造函数。
~TComponent 析构函数。
UpdateAction 更新 Action 的状态
protected:  
_AddRef 增加 COM 接口的引用计数
AsyncSchedule 把异步执行添加到主线程的队列里
CanObserve 返回 LiveBindings 的数据绑定类型是否支持
ChangeName 给组件改名
DefineProperties 把非 __published: 属性和数据存入流中
GetChildren 枚举所有的子组件
GetChildOwner 返回子组件的 Owner
GetChildParent 返回子组件的 Parent
GetDeltaStreams 初始化从父类继承过来的组件成员时使用。
GetIDsOfNames 通过名字获取 DISPID,用于调用 Invoke 方法
GetTypeInfoCount 返回 IDispatch 的类型信息个数
GetTypeInfo 返回 IDispatch 的类型信息
GetObservers Observers 属性利用这个方法返回属性值
GetOwner 返回对象的拥有者
Invoke 访问 COM 对象的属性和调用 COM 对象的方法
Loaded 当 Form 读取到内存的时候,初始化这个组件
Notification AComponent 发过来的创建或移除消息,会调用这个方法
ObserverAdded 添加 LiveBindings 数据绑定时会调用这个方法
PaletteCreated 组件在组件面板里面创建的时候,会调用这个方法
QueryInterface 返回当前组件所支持的 COM 接口的引用
ReadState 从流中读取组件的状态
_Release 减少 COM 接口的引用计数 / 销毁对象
RemoveFreeNotifications 通知所有的 Owner 这个组件要被销毁了
SetAncestor 清除或设置 ComponentState 属性里面的 csAncestor 状态
SetChildOrder 调整子组件的顺序
SetDesigning 清除或设置 ComponentState 属性里面的 csDesigning 状态
SetDesignInstance 清除或设置 ComponentState 属性里面的 csDesignInstance 状态
SetInline 清除或设置 ComponentState 属性里面的 csInline 状态
SetName 给属性 Name 赋值调用这个方法来修改组件名
SetParentComponent 设置组件的 Parent (容器组件)
Updated 清除 ComponentState 属性里面的 csUpdating 状态
Updating 设置 ComponentState 属性里面的 csUpdating 状态
UpdateRegistry 在注册表里面添加 COM 组件类型库信息
ValidateContainer 检查组件是否可以放入一个组件当作子组件
ValidateInsert 检查一个组件是否可以放入当前的组件作为子组件
ValidateRename 给组件改名时调用,检查名称是否有效
WriteState 把组件的状态写入流中
TPersistent:: TPersistent 继承过来的
public: TPersistent 继承过来的
Assign 把 Source 对象的所有的属性和数据赋值到当前对象
protected:  
AssignTo 把当前对象的所有属性和数据都赋值到 Dest 对象
TObject:: System::TObject 继承过来的
public: System::TObject 继承过来的
AfterConstruction 在构造函数结束的时候会自动调用 AfterConstruction
ClassInfo 返回运行时类型信息表 (RTTI table)
ClassName 获取类名,不包含命名空间的类名字符串
ClassNameIs 判断类名是否为参数指定的字符串
ClassParent 返回父类的类型信息
ClassType 返回类的类型信息
CleanupInstance 清除长字符串、Variants、接口变量等
DefaultHandler 默认的消息处理
Dispatch 处理消息的函数
DisposeOf 强制销毁对象
Equals 比较当前对象和 Obj 对象是否相同
FieldAddress 通过成员名称返回成员的地址
Free 销毁对象 (Delphi)
FreeInstance 释放 NewInstance 分配的内存
GetHashCode 返回对象的 hash 值
GetInterface 获取指定的接口
GetInterfaceEntry 获取接口项目
GetInterfaceTable 获取接口表
InheritsFrom 当前对象的类是否从 AClass 继承过来的
InitInstance 初始化成员,给他们清零
InstanceSize 返回给实例数据分配内存需要多少字节数
MethodAddress 通过名称返方法的地址
MethodName 通过方法的地址返回名称
NewInstance 给实例分配内存,并且返回新的实例的地址
QualifiedClassName 返回包含命名空间的类名
ToString 转为字符串
UnitName 返回类所在的命名空间
UnitScope 返回类所在的命名空间

3. System::Classes::TComponent 事件

事件 说明
protected:  
OnGetDeltaStreams 初始化从父类继承过来的组件成员时产生的事件

4. System::Classes::TComponent 数据成员

数据 类型 说明
protected:    
FComponentStyle TComponentStyle 储存组件样式,由组件内部使用

相关:


C++ Builder 参考手册 ➙ System::Classes ➙ TComponent

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容