Класс TWinControl служит родителем так называемых «оконных» компонентов. Отличительной особенностью таких компонентов является наличие у них специальной оконной процедуры, в которую Windows передает свои управляющие сообщения.

Класс TWinControl обеспечивает следующую функциональность своих потомков:

• компонент может включать в себя функциональность основного окна Windows; например, если основное окно - текстовое поле ввода, компонент может использовать редакторские возможности для отображения и редактирования текста;
• компонент может получать фокус ввода (события от клавиатуры);

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

Оконные компоненты имеют важнейшее свойство Handle, с помощью которого они могут оперировать графическими средствами Windows.

3.4.1. Свойства класса

Свойства класса TWinControl перечислены далее.

property AlignDisabled: Boolean;

Возвращает True, если выравнивание дочерних компонентов временно запрещено.

type TBevelEdge = (beLeft, beTop, beRight, beBottom); TBevelEdges = set of TBevelEdge;
property BevelEdges: TBevelEdges;

Определяет кромки по краям компонента:

• beLeft - есть левая кромка;
• ЬеТор - есть верхняя кромка;
• beRight - есть правая кромка;

• beBottom - есть нижняя кромка.

type TBevelCut = (bvNone, bvLowered, bvRaised, bvSpace);
property Bevellnner: TBevelCut;

Определяет стиль внутренней кромки:

• bvNone - нет эффекта объема;
• bvLowered - вдавленная кромка;
• bvRaised - выпуклая кромка;

• bvSpace - кромка белая, если свойство BevelKind не содержит bkTitle, в противном случае - выпуклая.

type TBevelKind - (bkNone, bkTile, bkSoft, bkFlat);
property BevelKind: ,*TBevelKind;

Определяет контрастность кромок:

• bkNone - нет кромки;
• bkTile - кромки контрастные (черные);
• bkSof t - кромки пониженной контрастности (серые);
• bkFlat - кромки белые, property BevelOuter: TBevelCut;
Определяет стиль внешней кромки, property BevelWidth: TBevelWidth;
Определяет толщину кромки, property BorderWidth: TBorderWidth;

Определяет толщину рамки.

property Brush: TBrush;
Кисть компонента, property ClientOrigin: TPoint;
Содержит экранные координаты верхнего левого угла компонента, property ClientRect: TRect;
Содержит размер (в пикселах) клиентской области компонента, property ControlCount: Integer;
Содержит количество дочерних компонентов, property Controls[Index: Integer]: TControl;
Открывает индексированный доступ к дочерним компонентам, property Ctl3D: Boolean;
Если содержит True, компонент имеет эффект объема, property DefWndProc: Pointer;

Содержит ссылку на умалчиваемую процедуру обработки сообщений Windows.

property DockClientCount: Integer;

Содержит количество «причаленных» дочерних компонентов, то есть компонентов, полученных операцией причаливания.

property DockClients[Index: Integer]: TControl;
Открывает индексированный доступ к причаленным компонентам, property DockManager: IDockManager;

Определяет интерфейс менеджера операции причаливания.

property DockSite: Boolean;

Если содержит True, компонент может принимать дочерние компоненты с помощью операции причаливания.

property DoubleBuffered: Boolean;

Если содержит True, компонент рисует себя сначала в памяти, в противном случае - сразу на экране. Двойная буферизация уменьшает мерцание, но требует дополнительной памяти. Если DockSite « True, должна использоваться двойная буферизация. Для некоторых компонентов (например, TRichEdit) двойная буферизация недоступна.

property Handle: HWND;

Ссылка на базовый экран Windows.

property ParentBackground: Boolean;

Если содержит True, компонент будет использовать фоновый узор своего родителя.

property ParentWindow: HWnd;
Ссылка на базовый экран родителя, property Showing: Boolean;

Если содержит True, компонент и его дочерние компоненты видны на экране.

type TTabOrder = -1..32767; property TabOrder: TTabOrder;

Определяет порядок обхода дочерних компонентов с помощью клавиши Tab. Если -1, компонент не выбирается клавишей, если 0, компонент первым получает фокус ввода.

property TabStop: Boolean;

Если содержит True, компонент получит фокус ввода при нажатии клавиши Tab в порядке, указываемом свойством TabOrder.

property UseDockManager: Boolean;

Если содержит True, процесс причаливания управляется специальным менеджером.

property VisibleDockClientCount: Integer;

Содержит количество видимых дочерних компонентов, полученных после причаливания.

property WindowHandle: Hwnd;

То же, что и свойство Handle. Это свойство защищено и доступно только внутри компонента.

Свойство Handle содержит ссылку на базовый экранный объект Windows (в терминологии Windows - дескриптор контекста устройства, или просто контекст устройства). Этот объект открывает доступ ко всем изобразительным возможностям Windows через соответствующие API-функции. Например, следующий обработчик покажет главное окно свернутым и неактивным:

procedure TForml.FormActivate(Sender: TObj ect);
begin
ShowWindow(Handle, SW_SHOWMINNOACTIVE) end;

Однако в большинстве наследников класса вводится значительно более удобное свойство Canvas класса TCanvas. Например, следующий обработчик (проект $(S0URCE)\Ch03\CanvasDemo.dpr) создаст экран, показанный на рис. 3.3:

procedure TfmExample.BitBtnlClick(Sender: TObject); begin with pbBit.Canvas, Brush do begin Bitmap := TBitmap.Create; // Создаем кисть

try

if OPDlg.Execute then Bitmap. LoadFromFile(OPDlg.FileName); // Загружаем изображение FillRect (ClipRect) ; // Заполняем фон

finally

Bitmap.Free // Освобождаем кисть

end end end;
3.4. Класс TWinControl

Рис. 3.3. Демонстрация канвы

Описание класса TCanvas приводится в 4.4.4.

3.3.3. События класса TControl || Оглавление || 3.4.2. Методы класса TWinControl


Искусство создания компонентов Delphi



Новости за месяц

  • Апрель
    2019
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс