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 | 储存组件样式,由组件内部使用 |
相关:
- Vcl::Controls::TControl
- System::Classes::TPersistent
- System::TObject
- VCL 类继承关系
C++ Builder 参考手册 ➙ System::Classes ➙ TComponent