M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

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