TWinControl

=== 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 добавлено еще несколько методов-обработчиков событий, обеспечивающих реакцию на ввод с клавиатуры, получение и потерю фокуса. 
ID: 00325