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
  • 控件 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 储存组件样式,由组件内部使用

相关:

  • Vcl::Controls::TControl
  • System::Classes::TPersistent
  • System::TObject
  • VCL 类继承关系

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

你可能感兴趣的:(TComponent - C++ Builder)