Самоучитель по Delphi 7 для профессионалов


Сходства и различия визуальных компонентов CLX и VCL



Большинство свойств и методов компонентов VCL и CLX идентичны. А существующие различия вызваны необходимостью использования специальных объектов — widget и особенностями представления визуальных элементов в Linux.

Базовые классы CLX — TControl и Twidgetcontrol для обеспечения прорисовки обращаются к динамической библиотеке Qt через заголовочный файл Qt.pas.

Таким образом, разработчик избавлен от необходимости работы с графическим интерфейсом Linux на низком уровне.

Для компонента CLX существует свойство

property Handle: QWidgetH;

которое является указателем на связанный объект widget и позволяет вызывать его методы напрямую.

Если экземпляр widget не создан, метод

procedure CreateHandle; virtual;

не только создает и инициализирует widget, но и устанавливает указатель Handle, создает объекты-перехватчики (см. ниже) и задает настройки по умолчанию для этого визуального компонента. При необходимости в классах-потомках метод CreateHandle перекрывается и в него добавляется новая функциональность.

Уничтожение созданного widget осуществляется методом

procedure DestroyHandle;

который уничтожает все дочерние widget и объекты-перехватчики, а также обнуляет свойства Handle И Hooks.

При необходимости для простого создания и инициализации widget можно использовать метод

procedure CreateWidget; virtual;

который сделает это, вызвав внешнюю функцию Qwidget_Create, и метод

procedure InitWidget; virtual;

который определяет визуальные параметры widget.

Также в классах CLX доступен указатель на родительский widget за счет использования свойства

property ParentWidget: QWidgetH;

Если это свойство не определено, можно использовать свойство

property ChildHandle: QWidgetH;

родительского класса, например, таким образом:

if Not Assigned(ParentWidget) then if Assigned(Parent) then

Result := Parent.ChildHandle;

В классах CLX иначе реализована обработка событий. В Linux все события делятся на два вида — системные и события widget. Системные события обрабатываются процедурой — аналогом процедуры wndProc для компонентов VCL.




Начало  Назад  Вперед



Книжный магазин