Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Связь с родительским элементом управления




Механизм связывания визуального компонента с родительским компонентом (владельцем) позволяет автоматически задавать для нового элемента управления некоторые свойства, отвечающие за его внешний вид (см. выше). В результате все дочерние элементы управления для одного родительского (формы, панели) будут выглядеть одинаково оформленными.

Родительский компонент задается свойством

property Parent: TWinControl;

Для каждого дочернего элемента управления можно задать значения нескольких свойств:

property ParentBiDiMode: Boolean; property ParentColor: Boolean; property ParentFont: Boolean; property ParentShowHint: Boolean;

Каждое из них управляет одной характеристикой визуализации элемента. Метод

function HasParent: Boolean; override;

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

В классе TControl впервые появляются методы-обработчики событий, которые обеспечивают передачу в элемент действия мыши, присоединение и перетаскивание.

 

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

Класс TCustomControl

Класс TCustomControl предназначен для создания на его основе нестандартных оконных элементов управления. Процесс визуализации в нем упрощен за счет использования специального класса TCanvas, инкапсулирующего канву (см. гл. 11).

Доступ к канве осуществляется через свойство

property Canvas: TCanvas;

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

procedure PaintWindowfDC: HDC); override;

после получения сообщения WM_PAINT.

Возможности этого класса унаследовали классы TPanel, TGroupBox, TStringGrid и т. д.

Класс TGraphicControl

Класс TGraphicControl предназначен для создания на его основе визуальных компонентов, не получающих фокус в процессе выполнения приложения. Так как непосредственным предком класса является класс TControl, то потомки TGraphicControl умеют реагировать на управляющие воздействия мышью.

Наглядный пример элемента управления, которому не нужно получать фокус, — это компонент TLabel, предназначенный для отображения текста, или компонент Timage, предназначенный для визуализации изображений.

Для визуализации элементов управления на основе этого класса используется канва, инкапсулированная в классе TCanvas.

Доступ к канве осуществляется через свойство

property Canvas: TCanvas;

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

procedure PaintWindow(DC: HDC); override;

после получения сообщения WM_PAINT.

Резюме

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





Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 257; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.