Класс TWinControl
Класс TWinControl
обеспечивает создание и использование оконных элементов
управления (см. выше). Напомним, что оконный элемент
управления имеет системный дескриптор окна
hwnd. Однако оконными элементами являются не
только формы и диалоги, но и большинство стандартных
элементов управления.
Новые механизмы, инкапсулированные
в классе, обеспечивают выполнение характерных для оконных
элементов функций: прием и передачу фокуса, отклик на
действия мышью и ввод с клавиатуры и т. д. Рассмотрим
основные свойства и методы класса.
Дескриптор окна содержится в свойстве
property Handle:
HWND;
При создании оконного элемента управления
вызывается метод
procedure CreateParams(var
Params: TCreateParams); virtual;
который заполняет структуру
TCreateParams необходимыми значениями:
type
TCreateParams = record
Caption: PChar;
Style: DWORD;
ExStyle: DWORD;
X, Y: Integer;
Width, Height: Integer;
WndParent: HWND;
Param: Pointer
WindowClass: TWndClass;
WinClassName: array[0..63]
of Char;
end;
Для создания дескриптора окна для элемента
управления используется метод
procedure CreateHandle;
virtual;
Операционная система создает дескриптор
окна только вместе с самим окном. Поэтому метод
CreateHandle только создает окно, а для присваивания
свойству Handle значения дескриптора
окна вызывает метод createwnd.
Для передачи фокуса между элементами
управления на одной форме часто используется клавиша
<Таb>. Порядок перемещения
фокуса между элементами определяется свойством
type TTabOrder =
-1..32767;
property TabOrder:
TTabOrder;
В первую очередь фокус передается компоненту
с минимальным значением свойства. Далее — по возрастанию
значения. При переносе компонента на форму это значение
задается автоматически в соответствии с числом компонентов
на форме.
Компонент можно заставить не откликаться
на клавишу <Таb>. Для этого
свойству
property TabStop:
Boolean;
необходимо присвоить значение
False.
Для передачи фокуса прямо элементу
управления применяется метод
procedure SetFocus;
virtual;
Чтобы узнать, имеет ли элемент управления
фокус, в настоящее время используется метод
function Focused:
Boolean; dynamic;
Все оконные элементы имеют рамку по
контуру (впрочем, она может быть не видна). Ее параметры
задаются группой свойств:
- property BevelEdges: TBevelEdges;
задает, какие стороны входят в рамку;
- property Bevellnner: TBevelCut;
property BevelOuter: TBevelCut;
задают внешний вид рамки;
- property BevelKind: TBevelKind;
определяет стиль рамки;
- property BevelWidth: TBevelWidth;
задает размер рамки.
Свойство
property Brush: TBrush;
определяет параметры кисти (цвет и
заполнение), которой рисуется фон элемента.
Оконный элемент может содержать другие
компоненты. Для управления ими применяется индексированный
список указателей, представляющих свойство
property Controls[Index:
Integer]: TControl;
Общее число дочерних элементов управления
содержится в свойстве
property ControlCount:
Integer;
Внешний вид оконного элемента определяется
свойством
property Ctl3D: Boolean
При значении True
элемент управления имеет трехмерный вид. Иначе элемент
выглядит плоским.
Для вызова темы контекстной помощи
для конкретного элемента управления предназначено свойство
type THelpContext
= -MaxLonglnt..MaxLonglnt;
property HelpContext:
THelpContext;
Значение свойства должно соответствовать
номеру темы в файле помощи.
В классе TwinControl
добавлена возможность использования редакторов способа
ввода (Input Method Editor, IME). Такие редакторы позволяют
приспособить стандартную раскладку клавиатуры для символьных
языков для ввода нестандартных символов (иероглифов
и т. д.). Редакторы IMЕ представляют собой специально
устанавливаемое в операционной системе программное обеспечение
(ПО). Имя такого редактора задается в свойстве ImeName.
Режим работы редактора определяется свойством ImeMode.
В классе TwinControl
добавлено еще несколько методов-обработчиков событий,
обеспечивающих реакцию на ввод с клавиатуры, получение
и потерю фокуса.
|