TControl - C++ Builder

C++ Builder 参考手册 ➙ Vcl::Controls ➙ TControl


Vcl::Controls::TControl 是所有 VCL 控件的父类

  • 简介
  • 成员

一. Vcl::Controls::TControl 简介

  • 继承关系:
    System::TObject
    ⠀╙ System::Classes::TPersistent
    ⠀⠀⠀┗ System::Classes::TComponent
    ⠀⠀⠀⠀⠀└ Vcl::Controls::TControl
  • 头文件:#include
  • 命名空间:Vcl::Controls
  • Vcl::Controls::TControl 是所有 VCL 控件的父类;
  • 控件 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));

二. Vcl::Controls::TControl 成员

1. Vcl::Controls::TControl 属性

属性 类型 说明
__published:
AlignWithMargins bool 当 Align 属性不是 alNone 的时候,是否与其他控件保持距离
Cursor TCursor 鼠标形状
CustomHint TCustomHint * 关联到自定义方式显示 Hint 属性的提示框控件
Height int 控件的高度
HelpContext THelpContext 控件在帮助文档里面的标识
HelpKeyword UnicodeString 控件在帮助文档里面的关键字
HelpType THelpType 控件在帮助说明里面的类型
Hint UnicodeString 鼠标悬停提示
Left int 控件的水平位置
Margins TMargins * 这个控件和其他控件之间的距离
(当 AlignWithMargins 为 true,并且 Align 不是 alNone 时)
ParentCustomHint bool 是否使用容器的 CustomHint 属性关联的 Hint 提示框
Top int 控件的垂直位置
Width int 控件的宽度
public:
Action TBasicAction * 关联到 Action 控件
Align TAlign 控件相对于容器的大小和位置
Anchors TAnchors 控件相对于容器的大小和位置
BiDiMode TBiDiMode 文字的书写方向
BoundsRect TRect 控件的位置和大小
ClientHeight int 控件客户区高度
ClientOrigin TPoint 客户区的左上角在屏幕坐标的位置
ClientRect TRect 客户区的矩形范围
ClientWidth int 控件客户区宽度
Constraints TSizeConstraints * 限制控件或窗口大小
ControlState TControlState 控件状态
ControlStyle TControlStyle 控件样式
DockOrientation TDockOrientation 这个控件和与它停靠在一起的控件之间的相对位置
Enabled bool 控件是否响应用户操作
ExplicitHeight int 记住自动调整位置和大小之前的高度
ExplicitLeft int 记住自动调整位置和大小之前的水平位置
ExplicitTop int 记住自动调整位置和大小之前的垂直位置
ExplicitWidth int 记住自动调整位置和大小之前的宽度
Floating bool 控件从 DockSite 里面拖拽漂浮出来了
FloatingDockSiteClass TWinControlClass 控件漂浮出来是放在了这个小窗口里面
HostDockSite TWinControl * 控件停靠在这个控件 (DockSite) 里面
LRDockWidth int 控件停靠在 DockSite 里面,按照上下顺序排列时控件的宽度
Parent TWinControl * 控件放在了这个容器里面
ShowHint bool 是否显示控件的提示信息 (Hint)
StyleElements TStyleElements 控件使用主题的属性
TBDockHeight int 控件停靠在了 DockSite 里面,按照左右顺序排列时控件的高度
Touch TTouchManager * 触摸屏动作管理
UndockHeight int 控件从 DockSite 里面漂浮出来时的高度
UndockWidth int 控件从 DockSite 里面漂浮出来时的宽度
Visible bool 控件是否可见
WindowProc TWndMethod 指向 Windows 消息处理函数的指针
protected:
ActionLink TControlActionLink * 关联到 ActionLink
AutoSize bool 控件是否要根据内容自动调整大小
Caption TCaption 标题或显示的文字
Color TColor 控件的颜色
DesktopFont bool 使用桌面字体
DragCursor TCursor 拖拽时的鼠标形状
DragKind TDragKind 拖拽类型
DragMode TDragMode 拖拽方式
Font TFont * 控件的字体
IsControl bool 使用这个属性可以让 Form 当作复杂控件使用
MouseCapture bool 捕获鼠标事件
ParentBiDiMode bool 使用容器 (Parent) 的 BiDiMode 属性
ParentColor bool 使用容器 (Parent) 的 Color 属性
ParentFont bool 使用容器 (Parent) 的 Font 属性
ParentShowHint bool 使用容器 (Parent) 的 ShowHint 属性
PopupMenu TPopupMenu * 关联到弹出菜单
ScalingFlags TScalingFlags 控件的哪些属性会随系统的缩放比例进行缩放
Text TCaption 控件显示或编辑的文字
WheelAccumulator int 鼠标滚轮累加器
WindowText WideChar * 控件的文字,默认情况和 Text 属性的内容相同
TComponent:: 从 System::Classes::TComponent 继承过来的
__published:   从 System::Classes::TComponent 继承过来的
Name TComponentName 组件的名称
Tag NativeInt 储存一个 NativeInt 类型的数据
public:   从 System::Classes::TComponent 继承过来的
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. Vcl::Controls::TControl 方法

方法 说明
public:
BeginDrag 拖拽控件
BringToFront 控件提到最前,可以挡住其他控件,不被其他控件挡住
ClientToParent 客户区坐标转为容器 (Parent) 坐标
ClientToScreen 客户区坐标转为屏幕坐标
DefaultHandler 重载 TObject 的 DefaultHandler 方法,默认的消息处理
Dock 控件内部使用的函数,如果需要使用程序停靠控件,需要调用 ManualDock 方法
DragDrop OnDragDrop 事件的默认处理
Dragging 返回控件是否正在被拖拽
DrawTextBiDiModeFlags 获取 Canvas 的 TextFlags 属性值,可以提供给 DrawText 函数使用
DrawTextBiDiModeFlagsReadingOnly 根据 BiDiMode 属性,获取是否需要在参数里面添加 DT_RTLREADING 来调用 Windows API 函数 DrawText
EndDrag 结束 BeginDrag 开始的拖拽
GetControlsAlignment 获取控件里面文字的对齐方式
GetParentComponent 重载 TComponent 的 GetParentComponent 方法,返回容器组件,即 Parent 属性
GetTextBuf 读取 Text 属性到 Buffer 里面
GetTextLen 返回 Text 属性的长度
HasParent 重载 TComponent 的 HasParent 方法,获取这个组件是否放在了容器里面
Hide 隐藏控件,Visible 属性变为 false
InitiateAction 调用 ActionLink 的 Update 方法,如果控件关联了 ActionLink 属性
Invalidate 控件需要刷新显示,整个控件的内容即将重绘
IsRightToLeft 控件是否需要左右翻转 (符合中东地区的习惯)
ManualDock 把控件停靠在参数给定的控件里面
ManualFloat 控件从停靠位置漂浮出来
MouseWheelHandler 处理鼠标滚轮消息
ParentToClient 容器 (Parent) 坐标转为客户区坐标
Perform 响应和处理收到的 Windows 消息
Refresh 立即刷新显示,通过调用 Repaint 方法实现
Repaint 立即刷新显示
ReplaceDockedControl 把控件停靠在其他控件停靠的位置,替换那个控件
ScaleForPPI 按照参数给定分辨率重新调整控件
ScreenToClient 屏幕坐标转换为客户区坐标
SendToBack 控件放到最后,可以被其他控件挡住,不遮挡其他控件
SetBounds 同时修改 Left、Top、Width 和 Height 属性,只需要一次刷新显示
SetDesignVisible 控件在设计期间隐藏或显示
SetParentComponent 设置控件的 Parent,控件内部调用的函数
SetTextBuf 设置 Text 属性为 Buffer 的内容
Show 显示控件,Visible 属性变为 true
TControl 构造函数
~TControl 析构函数
Update 立即执行等待的刷新,不等待 Windows 的刷新消息
UseRightToLeftAlignment 控件是否需要从右到左的对齐 (符合中东地区的习惯)
UseRightToLeftReading 控件采用从右到左的书写和阅读 (符合中东地区的习惯)
UseRightToLeftScrollBar 控件的垂直滚条在左边 (符合中东地区的习惯)
protected:
ActionChange 控件关联的 Action 有变化的时候会调用这个方法
AdjustSize 当 AutoSize 为 true 的时候,会自动调用 AdjustSize 方法调整控件的大小
AssignTo 重载 TPersistent 的 AssignTo 方法,把当前对象的所有属性和数据都赋值到 Dest 对象
AsyncSchedule 把异步执行 ASyncResult 添加到主线程的队列里面
BeginAutoDrag 当 DragMode 属性为 dmAutomatic 的时候,会自动调用这个方法
CalcCursorPos 获取鼠标的位置,相对于客户区坐标
CanAutoSize 当 AutoSize 属性为 true 的时候会自动调用这个方法
CanResize 当控件的大小发生变化是,会自动调用 CanResize 方法
Changed 给控件发送一个 CM_CHANGED 消息。
如果控件的属性值变化了,会自动调用 Changed 方法
ChangeScale 当控件需要改变大小的时候会自动调用这个方法
Click 当使用鼠标左键点击控件的时候,会自动调用 Click 方法
ConstrainedResize 如果 Constraints 属性包含不等于 0 的值,当控件改变大小的时候会调用这个方法,
这个方法会产生 OnConstrainedResize 事件
CreateTouchManager 创建 TouchManager,默认的是 TTouchManager 类型
DblClick 双击鼠标会自动调用这个方法
DefaultDockImage 绘制和擦除拖拽和停靠 (Dock) 使用的图像
DefaultScalingFlags 获取 ScalingFlags 的默认值
DefineProperties 重载了 TComponent 的 DefineProperties 方法,
提供把非 __published: 属性 (IsControl 属性) 存入流中或从流中读出
DesignWndProc 处理参数 Message 的消息,并且返回这个消息相关的布尔值
DockTrackNoTarget 处理拖拽控件到无效的目标上的方法,当拖拽和停靠时会自动调用这个方法
DoContextPopup 当控件的弹出菜单弹出的时候,会自动调用这个方法,
这个方法会触发和执行 OnContextPopup 事件
DoDock 处理拖放事件,在拖放的过程中会自动调用这个方法
DoEndDock 当控件结束停靠的时候,会自动调用这个方法,
这个方法会触发和执行 OnEndDock 事件
DoEndDrag 当拖拽结束的时候会自动调用这个方法,
这个方法会触发和执行 OnEndDrag 事件
DoGesture 处理未处理的手势事件
DoGetGestureOptions 控件内部调用的方法,获取手势处理选项
DoMouseWheel 处理鼠标滚轮,当拨动鼠标滚轮的时候,会自动调用这个方法,
这个方法会触发和执行 OnMouseWheel 事件
DoMouseWheelDown 鼠标滚轮向下拨动,会触发和执行 OnMouseWheelDown 事件
DoMouseWheelUp 鼠标滚轮向上拨动,会触发和执行 OnMouseWheelUp 事件
DoStartDock 当控件开始停靠的时候,会自动调用这个方法,
这个方法会触发和执行 OnStartDockevent 事件
DoStartDrag 当拖拽开始的时候会自动调用这个方法,
这个方法会触发和执行 OnStartDrag 事件
DragCanceled 当拖拽动作取消的时候,会自动调用这个方法
DragOver 在拖拽的时候会自动调用这个方法
DrawDragDockImage 绘制停靠图像,这个方法会自动被调用,用来画拖拽时的控件
EraseDragDockImage 擦除停靠图像,这个方法会自动被调用,用来擦除拖拽时的控件
GetAction 获取 Action 属性值
GetActionLinkClass 获取 ActionLink 属性值
GetClientOrigin 获取 ClientOrigin 属性的值
GetClientRect 获取 ClientRect 属性的值
GetDesignDpi 返回控件所在 Form 或 Form 本身的 PixelsPerInch 属性
GetDeviceContext 获取窗口句柄和 HDC (device context)
GetDockEdge 如果有其他控件拖拽到这个控件,获取那个控件应该停靠在哪个边缘,
在拖拽的过程中,会自动调用这个方法
GetDragImages 鼠标拖拽时显示的图像
GetEnabled 获取 Enabled 属性的值
GetFloating 获取 Floating 属性的值
GetFloatingDockSiteClass 获取 FloatingDockSiteClass 属性的值
GetPalette 获取调色板句柄
GetParentCurrentDpi 返回最底层 Parent 的 FCurrentPPI 属性
GetPopupMenu 返回关联到这个控件的弹出菜单
GetDragMode 返回 DragMode 属性值
IsTouchPropertyStored 返回控件是否关联到 touch manager
Loaded 重载 TComponent 的 Loaded 方法,
TControl 在这个方法里面初始化关联的 Action
MouseActivate 鼠标点击激活窗口,这个方法触发 OnMouseActivate 事件
MouseDown 触发并且执行 OnMouseDown 事件
MouseMove 触发并且执行 OnMouseMove 事件
MouseUp 触发并且执行 OnMouseUp 事件
Notification 重载 TComponent 的 Notification 方法,
AComponent 发过来的创建或移除消息,会自动调用这个方法
PaletteChanged 响应系统调色板变化,控件需要调整自身的调色板
PositionDockRect 使用 UndockWidth、UndockHeight、LRDockWidth, 和 TBDockHeight 属性重新调整 TDragDockObject 停靠的位置和大小
ReadState 重载 TComponent 的 ReadState 方法,读取组件的状态
RequestAlign 当控件的位置或大小发生变化的时候,调用这个方法请求 Parent 根据 Align 属性重新调整 Parent 里面的控件的大小
Resize 当控件的大小发生变化的时候,会自动调用这个方法,这个方法触发并且执行 OnResize 事件
ScaleConstraints 把 Constraints 属性里面的属性值按照比例缩放
ScaleMargins 把 Margins 属性里面的属性值按照比例缩放
SendCancelMode 控件取消模态 (modal state,当前只有这一个控件响应用户输入的状态)
SendDockNotification 给 HostDockSite 发送消息
SetAutoSize 修改 AutoSize 属性值
SetBiDiMode 修改 BiDiMode 属性值
SetCustomHint 修改 CustomHint 属性值
SetDragMode 修改 DragMode 属性值
SetEnabled 修改 Enabled 属性值
SetName 重载 TComponent 的 SetName 方法,
在改名的时候修改 Text 或 Caption 属性
SetParent 修改 Parent 属性值
SetParentBiDiMode 修改 ParentBiDiMode 属性值
SetStyleElements 修改 StyleElements 属性时调用这个方法来实现改变主题
SetZOrder 改变这个控件和与这个控件在同一个容器里面的其他控件之间的前后 (遮挡) 关系
UpdateBoundsRect 修改 Left、Top、Width 和 Height 属性,不产生任何事件
UpdateExplicitBounds 设置 ExplicitBounds 属性的值
UpdateStyleElements 当 StyleElements 属性变化时,自动调用这个方法
VisibleChanging Visible 属性变化之前自动调用这个方法
WndProc 处理 Windows 消息。子类可以重载这个方法捕获和处理 Windows 消息
TComponent:: 从 System::Classes::TComponent 继承过来的
public: 从 System::Classes::TComponent 继承过来的
BeforeDestruction 检查并调用 Destroying 方法
BeginInvoke 异步调用 AProc 或 AFunc
DestroyComponents 销毁所有容纳的子组件
Destroying 指示这个组件和它所有的子组件都将被销毁
EndFunctionInvoke 等待异步执行的函数的返回值
EndInvoke 等待异步执行完成
ExecuteAction 执行一个 Action
FindComponent 通过名称查找子组件
FreeNotification 把这个组件将要被销毁的信息通知给 AComponent
FreeOnRelease 调用 COM 接口的 Release 方法时,会调用这个方法
GetEnumerator 返回一个可以枚举子组件的对象
GetNamePath 返回在 Object Inspector 属性面板里面的名称
InsertComponent 添加一个子组件
IsImplementorOf 返回当前组件所支持的 COM 接口的引用
operator () 类型转换操作符,转为 _di_IInterface 类型
或者 _di_IInterfaceComponentReference 类型
ReferenceInterface 建立或移除内部链接来通知这个组件
RemoveComponent 移除一个子组件
RemoveFreeNotification 把 FreeNotification 的通知信息去掉
SafeCallException 处理 COM 接口的异常
SetSubComponent 设置或清除 ComponentStyle 里面的 csSubComponent 样式
TComponent 构造函数。
~TComponent 析构函数。
UpdateAction 更新 Action 的状态
protected: 从 System::Classes::TComponent 继承过来的
_AddRef 增加 COM 接口的引用计数
AsyncSchedule 把异步执行添加到主线程的队列里
CanObserve 返回 LiveBindings 的数据绑定类型是否支持
ChangeName 给组件改名
GetChildren 枚举所有的子组件
GetChildOwner 返回子组件的 Owner
GetChildParent 返回子组件的 Parent
GetDeltaStreams 初始化从父类继承过来的组件成员时使用。
GetIDsOfNames 通过名字获取 DISPID,用于调用 Invoke 方法
GetTypeInfoCount 返回 IDispatch 的类型信息个数
GetTypeInfo 返回 IDispatch 的类型信息
GetObservers Observers 属性利用这个方法返回属性值
GetOwner 返回对象的拥有者
Invoke 访问 COM 对象的属性和调用 COM 对象的方法
ObserverAdded 添加 LiveBindings 数据绑定时会调用这个方法
PaletteCreated 组件在组件面板里面创建的时候,会调用这个方法
QueryInterface 返回当前组件所支持的 COM 接口的引用
_Release 减少 COM 接口的引用计数 / 销毁对象
RemoveFreeNotifications 通知所有的 Owner 这个组件要被销毁了
SetAncestor 清除或设置 ComponentState 属性里面的 csAncestor 状态
SetChildOrder 调整子组件的顺序
SetDesigning 清除或设置 ComponentState 属性里面的 csDesigning 状态
SetDesignInstance 清除或设置 ComponentState 属性里面的 csDesignInstance 状态
SetInline 清除或设置 ComponentState 属性里面的 csInline 状态
SetParentComponent 设置组件的 Parent (容器组件)
Updated 清除 ComponentState 属性里面的 csUpdating 状态
Updating 设置 ComponentState 属性里面的 csUpdating 状态
UpdateRegistry 在注册表里面添加 COM 组件类型库信息
ValidateContainer 检查组件是否可以放入一个组件当作子组件
ValidateInsert 检查一个组件是否可以放入当前的组件作为子组件
ValidateRename 给组件改名时调用,检查名称是否有效
WriteState 把组件的状态写入流中
TPersistent:: 从 System::Classes::TPersistent 继承过来的
public: 从 System::Classes::TPersistent 继承过来的
Assign 把 Source 对象的所有的属性和数据赋值到当前对象
TObject:: 从 System::TObject 继承过来的
public: 从 System::TObject 继承过来的
AfterConstruction 在构造函数结束的时候会自动调用 AfterConstruction
ClassInfo 返回运行时类型信息表 (RTTI table)
ClassName 获取类名,不包含命名空间的类名字符串
ClassNameIs 判断类名是否为参数指定的字符串
ClassParent 返回父类的类型信息
ClassType 返回类的类型信息
CleanupInstance 清除长字符串、Variants、接口变量等
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. Vcl::Controls::TControl 事件

事件 说明
public:
OnGesture 触摸屏手势事件
protected:
OnCanResize 在改变大小之前产生的事件,是否允许改变大小
OnClick 控件的点击事件
OnConstrainedResize 如果 Constraints 属性包含不等于 0 的值,控件改变大小时候产生的事件
OnContextPopup 当控件的弹出菜单弹出的时候产生的事件
OnDblClick 双击鼠标产生的事件
OnDragDrop 把其他控件拖放到这个控件里面的时候产生这个事件
OnDragOver 在拖拽的时候会产生这个事件
OnEndDock 当控件结束停靠的时候产生的事件
OnEndDrag 当拖拽结束的时候产生的事件
OnMouseActivate 鼠标点击激活窗口
OnMouseDown 鼠标按钮按下
OnMouseEnter 鼠标移动到控件里面
OnMouseLeave 鼠标移动到控件外面
OnMouseMove 鼠标在控件里面移动
OnMouseUp 鼠标按钮抬起
OnMouseWheel 鼠标滚轮事件
OnMouseWheelDown 鼠标滚轮向下拨动
OnMouseWheelUp 鼠标滚轮向上拨动
OnResize 当控件的大小 (宽度或高度) 发生变化
OnStartDock 当控件开始停靠的时候产生这个事件
OnStartDrag 当拖拽开始的时候产生这个事件
TComponent:: 从 System::Classes::TComponent 继承过来的
protected: 从 System::Classes::TComponent 继承过来的
OnGetDeltaStreams 初始化从父类继承过来的组件成员时产生的事件

4. Vcl::Controls::TControl 数据成员

数据 类型 说明
protected:  
FAnchorMove bool 使用 Anchors 属性的时候,当控件移动的时候是否需要保持控件的尺寸
FAnchorOrigin TPoint Anchors 的坐标
FAnchorRules TPoint 使用 Anchors 属性的时候,记住控件的原始位置和大小
FCurrentPPI int 分辨率:每英寸的像素个数,默认值是 96
FExplicitHeight int 记住自动调整位置和大小之前的高度
FExplicitLeft int 记住自动调整位置和大小之前的水平位置
FExplicitTop int 记住自动调整位置和大小之前的垂直位置
FExplicitWidth int 记住自动调整位置和大小之前的宽度
FOriginalParentCalcType TOriginalParentCalcType 控件自动调整大小时获取容器的大小和位置的方法
FOriginalParentSize TPoint 如果使用了 Anchors 属性,记住容器 (Parent) 的大小
FReserved void * 控件内部使用的数据
TComponent:: 从 System::Classes::TComponent 继承过来的
protected:   从 System::Classes::TComponent 继承过来的
FComponentStyle TComponentStyle 储存组件样式,由组件内部使用

相关:

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

C++ Builder 参考手册 ➙ Vcl::Controls ➙ TControl

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