Шаг 16.
Состав класса TControl

    На этом шаге мы рассмотрим свойства, методы и события класса TControl.

Свойства класса TControl
Методы класса TControl
События класса TControl



    Класс TControl является базовым абстрактным классом для всех визуальных компонентов Delphi, то есть для компонентов, которые пользователь может видеть и которыми манипулирует во время выполнения приложения. Все они имеют общие свойства, методы и события, определяющие место их размещения, расцветку, реакцию на нажатие клавиш или кнопок мыши и т.д.

    Защищенные свойства и методы класса TControl используются в их потомках. Если требуется создать новый класс визуального компонента, его надо создавать как производный от TControl или от его потомков.

Свойства класса TControl

    Основные свойства класса TControl приведены в следующей таблице.

   
Таблица 1. Свойства класса TControl
Свойство Описание
property Action: TBasicAction; Определяет действие, связанное с данным управляющим элементом.
property Align: TAlign;
TAlign=(alNone, alTop, alBottom, alLeft, alRight, alClient);
Определяет способ выравнивания компонента в контейнере (родительском компоненте).
property Anchors: TAnchors; Определяет привязку данного компонента к родительскому при изменении размеров последнего.
property AutoSize: Boolean; Определяет, будет ли высота элемента автоматически адаптироваться к размеру символов текста.
property BoundsRect: TRect; Определяет координаты углов компонента в координатах содержащего его контейнера.
property Caption: String; Строка текста, идентифицирующая компонент для пользователя. Обычно это надпись на метке, кнопке и других компонентах.
property ClientHeight: Integer; Высота клиентской области в пикселях.
property ClientOrigin: TPoint; Координаты положения на экране левого верхнего угла клиентской области компонента. Свойство только для чтения.
property ClientRect: TRect; Определяет координаты углов клиентской области компонента.
property ClientWidth: Integer; Горизонтальный размер клиентской области в пикселях.
property Color:TColor; Цвет фона компонента.
property Constraints: TSizeConstraints; Позволяет задавать ограничения на допустимые изменения размеров компонента при изменении размеров окна приложения.
property ControlState: TControlState; Характеризует текущее состояние компонента во время выполнения приложения. Используется при создании новых классов.
property ControlStyle: TControlStyle; Определяет характеристики стиля компонента. Используется при создании новых классов.
property Cursor: TCursor; Определяет вид курсора мыши, при попадании его в область компонента.
property DesktopFont: Boolean; Определяет, использует ли компонент для отображения текста изображение шрифта Windows.
property DragCursor: TCursor; Определяет вид курсора мыши, при попадании его в область компонента в процессе перетаскивания.
property DragKind: TDragKind;
TDragKind = (dkDrag, dkDock);
Определяет, будет ли объект перетаскиваться по технологии Drag&Drop или Drag&Doc.
property DragMode: TDragMode;
TDragMode = (dmManual, dmAutomatic);
Определяет автоматическое или программное начало процесса перетаскивания.
property Enabled: Boolean; Определяет, реагирует ли компонент на события, связанные с мышью, клавиатурой и таймером.
property Floating: Boolean; Определяет, находится ли компонент в состоянии "плавающего" окна. Свойство только для чтения.
property Font: TFont; Определяет атрибуты шрифта.
property Height: Integer; Высота компонента в пикселях.
property Hint: String; Определяет текст подсказки.
property IsControl: Boolean; Определяет, сохраняет ли форма свои специфические свойства в поток. Свойство защищенное. Используется при создании новых компонентов.
property Left: Integer; Координата левого края компонента в пикселях.
property LRDockWidth: Integer; Ширина компонента, когда он в последний раз размещался в контейнере горизонтально. Свойство только для чтения.
property MouseCapture: Boolean; Определяет, может ли компонент захватываться мышью. Используется для создания новых компонентов.
property property Name: TComponentName;
TComponentName=String;
Имя компонента.
property Parent: TWinControl; Определяет родительский компонент, в площади которого находится данный компонент.
property ParentColor: Boolean; Определяет, что для компонента будет заимствован цвет родительского компонента.
property ParentFont: Boolean; Включает и выключает использование шрифта родительского компонента.
property ParentShowHint: Boolean; Включает и выключает свойство ShowHint родительского компонента.
property PopupMenu: TPopupMenu; Определяет связанный с компонентом объект всплывающего меню.
property ScalingFlags: TScalingFlags; Показывает, какие атрибуты компонента еще не отмасштабированы. Используется при разработке новых компонентов.
property ShowHint: Boolean; Разрешает или запрещает показывать окно подсказки.
property TBDockHeight: Integer; Высота компонента, когда он в последний раз размещался в контейнере вертикально. Свойство только для чтения.
property Text: TCaption;
TCaption=String;
Текст, связанный с данным компонентом.
property Top: Integer; Координата верхнего края компонента в пикселях.
property UndockHeight: Integer; Высота компонента, которая была в последний раз, когда он отображался плавающим окном. Свойство только для чтения.
property UndockWidth: Integer; Ширина компонента, которая была в последний раз, когда он отображался плавающим окном. Свойство только для чтения.
property Visible: Boolean; Делает компонент видимым или невидимым.
property Width: Integer; Горизонтальный размер компонента в пикселях.
property WindowProc: TWndMethod; Содержит оконную процедуру обработки сообщений, поступающих компоненту. Используется при создании новых компонентов.
property WindowText: PChar; Содержит текст, связанный с данным компонентом.

    Помимо перечисленных свойств, класс TControl наследует также ряд свойств класса TComponent, из которых можно отметить ComponentCount, ComponentIndex, Components, Owner, Tag и другие.

    К оглавлению

   

Методы класса TControl

    В приведенной ниже таблице перечислены только те методы, которые могут применяться пользователями или разработчиками не очень сложных компонентов.

   
Таблица 2. Методы класса TControl
Метод Описание
procedure BeginDrag(Immediate: Boolean; Threshold: Integer = -1); Начинает процесс перетаскивания компонента.
procedure BringToFront; Переносит компонент выше других компонентов на той же форме.
Changed; Используется, чтобы послать сообщение CM_CHANGED родительскому компоненту, если в свойствах данного компонента сделаны какие-то изменения, на которые должен прореагировать родительский компонент.
procedure ChangeScale(M, D: Integer); dynamic; Изменяет масштаб компонента.
procedure Click; dynamic; Вызывает обработчик события OnClick при щелчке мыши. Используется при проектировании новых классов.
function ClientToScreen(const Point: TPoint): TPoint; Преобразует координаты клиентской области в координаты экрана.
constructor Create(AOwner: TComponent); override; Конструктор переопределен для задания начальных значений свойств компонента.
procedure DblClick; dynamic; Вызывает обработчик события OnDblClick при двойном щелчке мыши. Используется при проектировании новых классов.
procedure DoEndDrag(Target:TObject; X, Y: Integer); dynamic; Вызывает обработчик события OnEndDrag. Используется при проектировании новых классов.
procedure DoStartDrag(var DragObject: TDragObject); dynamic; Вызывает обработчик события OnStartDrag. Используется при проектировании новых классов.
procedure DragCanceled; dynamic; Прерывает перетаскивание. Используется при проектировании новых классов.
procedure DragDrop(Source: TObject; X, Y: Integer); Вызывает обработчик события OnDragDrop. Используется при проектировании новых классов.
procedure EndDrag(Drop: Boolean); Завершает (успешно или неуспешно) перетаскивание. Используется при проектировании новых классов.
GetTextBuf; Записывает в заданный буфер фиксированного размера значение свойства Text. Используется, если нужна обратная совместимость с 16-битными кодами.
GetTextLen; Возвращает длину строки свойства Text, необходимую для задания размера буфера в методе GetTextBuf.
procedure Hide; Делает компонент невидимым.
procedure Invalidate; virtual; Вызывает полную перерисовку испорченного изображения компонента.
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic; Вызывает обработчик события OnMouseDown. Используется при проектировании новых классов.
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic; Вызывает обработчик события OnMouseUp. Используется при проектировании новых классов.
procedure Refresh; Немедленно перерисовывает компонент на экране, вызывая метод Repaint.
procedure Repaint; Немедленно перерисовывает компонент на экране, вызывая, при необходимости, метод Invalidate.
function ScreenToClient(const Point: TPoint): TPoint; Преобразует координаты экрана в координаты клиентской области компонента.
SendCancelMode; Прерывает модальное состояние элемента.
procedure SendToBack; Переносит компонент ниже других компонентов в той же форме.
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual; Задает сразу четыре свойства: Left, Top, Width и Height.
SetTextBuf; Записывает в заданный буфер значение свойства Text. Используется, если нужна обратная совместимость с 16-битными кодами.
procedure Show; Делает видимым невидимый компонент.
procedure UpdateBoundsRect(const R: TRect); Изменяет, как и SetBounds, полное описание BoundsRect, но не перерисовывает изображение компонента на экране.

    К оглавлению

   

События класса TControl

    В классе TControl, в отличие от предшествующих ему в иерархии, описаны не только свойства и методы, но и следующие события:

   
Таблица 3. События класса TControl
Событие Описание
property OnClick: TNotifyEvent; Событие при щелчке на компоненте и некоторых других действиях пользователя.
property OnDblClick: TNotifyEvent; Событие при двойном щелчке на компоненте.
property OnDragDrop: TDragDropEvent;
type TDragDropEvent = procedure(Sender, Source: TObject; X, Y: Integer) of object;
Событие при отпускании перетаскиваемого компонента.
property OnDragOver: TDragOverEvent;
type TDragOverEvent = procedure(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean) of object;
Событие при перетаскивании объекта над компонентом.
property OnEndDrag: TEndDragEvent;
type TEndDragEvent = procedure(Sender, Target: TObject; X, Y: Integer) of object;
Событие при окончании или прерывании перетаскивания.
property OnMouseDown: TMouseEvent;
type TMouseEvent = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object;
Событие при нажатии кнопки мыши над объектом.
property property OnMouseMove: TMouseMoveEvent;
type TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer) of object;
Событие при перемещении указателя мыши над объектом.
property OnMouseUp: TMouseEvent; Событие при отпускании нажатой кнопки мыши над объектом.
property property OnStartDrag: TStartDragEvent;
type TStartDragEvent = procedure(Sender: TObject; var DragObject: TDragObject) of object;
Событие при начале перетаскивания объекта.

    К оглавлению

    Более подробную информацию по использованию свойств, методов этого класса можно получить на шаге 25 "Описание класса TControl".

    На следующем шаге мы рассмотрим состав класса TWinControl.




Свойства класса TControl Методы класса TControl События класса TControl




Предыдущий шаг Содержание Следующий шаг