Programming: Delphi
Иллюстрированный самоучитель по Delphi 7 для профессионалов
Сходства и различия визуальных компонентов CLX и VCL
Большинство свойств и методов компонентов VCL и CLX идентичны. А существующие различия вызваны необходимостью использования специальных объектов —
widget и особенностями представления визуальных элементов в Linux.
Базовые классы CLX — TControl и
Twidgetcontrol для обеспечения прорисовки обращаются к динамической библиотеке Qt через заголовочный файл Qt.pas.
Таким образом, разработчик избавлен от необходимости работы с графическим интерфейсом Linux на низком уровне.
Для компонента CLX существует свойство
которое является указателем на связанный объект
widget и позволяет вызывать его методы напрямую.
Если экземпляр widget не создан, метод
не только создает и инициализирует widget, но и устанавливает указатель
Handle, создает объекты-перехватчики
и задает настройки по умолчанию для этого визуального компонента. При необходимости в классах-потомках метод
CreateHandle перекрывается и в него добавляется новая функциональность.
Уничтожение созданного widget осуществляется методом
который уничтожает все дочерние widget и объекты-перехватчики, а также
обнуляет свойства
Handle И Hooks.
При необходимости для простого создания и инициализации
widget можно использовать метод
который сделает это, вызвав внешнюю функцию
Qwidget_Create, и метод
который определяет визуальные параметры widget.
Также в классах CLX доступен указатель на родительский
widget за счет использования свойства
Если это свойство не определено, можно использовать свойство
родительского класса, например, таким образом:
if Not Assigned(ParentWidget) then if Assigned(Parent) then
Result := Parent.ChildHandle;
В классах CLX иначе реализована обработка событий. В Linux все события делятся на два вида — системные и события
widget. Системные события обрабатываются процедурой — аналогом процедуры
wndProc для компонентов VCL.
События, генерируемые widget, перехватываются и обрабатываются специальными объектами, взаимодействующими с объектом widget. Затем они передаются связанному объекту CLX, который вызывает необходимые обработчики событий.
Объекты-перехватчики создаются при вызове метода
а непосредственно для создания перехватчиков используется библиотечная функция
Qwidget_hook_create. Метод HookEvents вызывается автоматически при создании
widget.
Доступ к объекту-перехватчику возможен при помощи свойства
которое объявлено в секции protected и может быть использовано только при создании новых компонентов.
Классы CLX имеют очень интересное и важное свойство
которое позволяет управлять внешним видом и процессом отрисовки компонента.
Свойство
type TDefaultStyle = (dsWindows, dsMotif, dsMotifPlus, dsCDE, dsQtSGI, dsPlatinum, dsSystemDefault); property DefaultStyle: TDefaultStyle;
класса TWidgetStyle определяет стиль визуального компонента, задающий его внешний вид по умолчанию. Естественно, операционная система должна поддерживать выбранный стиль.
Кроме того, класс Twidgetstyle определяет некоторые наиболее общие параметры визуальных компонентов и обладает огромным числом обработчиков событий, которые вызываются при отрисовке всех возможных компонентов и экранных элементов.
Таким образом, свойство style является прекрасным инструментом для создания собственных компонентов с нестандартной функциональностью.
Для использования в Linux модернизирована система контекстной помощи для компонентов CLX. Теперь статья подсказки для визуального компонента может быть вызвана двумя способами.
Традиционно, путем определения уникального номера статьи в свойстве
и дополнительно, путем определения ключевого слова подсказки в свойстве
Способ вызова помощи определяется свойством
type THelpType = (htKeyword, htContext);
property HelpType: THelpType;
Примечание
Кроме того, отдельные компоненты CLX имеют дополнительные свойства и методы, определяющие их дополнительную функциональность в Linux.
В то же время некоторые привычные для программирования в Windows свойства компонентов отсутствуют в компонентах CLX. Это свойства обрамления компонента
(BevelEdges, Bevellnner, BevelKind, BevelOuter); ВОЗМОЖНОСТЬ двунаправленной печати текстов (свойство BioiMode); свойства для обратной совместимости с Windows 3.x
(Ctl3D и
ParentCtl3D); механизм присоединения и свойства
Drag-and-Drop, хотя сам механизм Drag-and-Drop остался (свойства
DockSite, DragKind, DragCursor).
Назад | Оглавление | Вперёд
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|