Главная » Delphi » Компонент ориентированная разработка

0

 

Немного подробнее о новой библиотеке CLX

CLX — это новая  межплатформенная библиотека, которая фактически состоит из четырех частей. Их описание (из  интерактивной справочной системы Delphi  6) при ведено  в табл. 10.1.

Таблица 10.1. Составные части CLX

Часть                        Описание

VisualCLX                 Базовые межплатформенные компоненты GUI и графики. Компонен

ты этой области для Linux и Windows могут отличаться друг от друга

DataCLX        Клиентские компоненты доступа  к данным.  Здесь  расположен набор локальных, клиент/серверных и  многоуровневых  компонентов  для клиентских наборов данных.  Компоненты для Linux  и Windows одинаковы

NetCLX                      Компоненты для  Internet, включая   DSO  Apache  и  CGI  Web  Broker.

Компоненты для Linux и Windows одинаковы

RTL                              Динамическая библиотека в составе  Classes.pas. Компоненты для

Linux  и Windows одинаковы. В Linux этот файл называется BaseRTL

VisualCLX — потомок среды  разработки Qt от Trolltech. Большинство людей  произ носят  Qt как “куте” (“cute”), хотя  Trolltech неоднократно объявляла, что  это  название следует  произносить как “кю ти” (“kyu tee”).  В настоящее время  данная  среда  разра ботки совместима и с Linux и с Windows. В этой главе обсуждается только  VisualCLX, а иные элементы CLX рассматриваются в других главах.

Что такое компонент?

Компоненты (component) — это строительные блоки  приложения, используя кото рые  разработчик создает  пользовательский интерфейс и включает в приложение не которые невизуальные элементы. Для  разработчиков приложений компонент —  это нечто, взятое из палитры компонентов и помещенное в форму.  После  помещения компонента в форму можно  манипулировать его свойствами и добавлять обработчики событий, чтобы  придать ему специфический вид или задать определенное поведение. С точки  зрения разработчика компонентов — это объект, реализованный в виде кода, написанного на языке  Object Pascal.  Такие  объекты могут,  например, инкапсулиро вать  поведение системных элементов (элементов управления Windows).  Другие  объ екты могут представлять собой  абсолютно новый визуальный или даже невизуальный элемент (в таком случае поведение компонента полностью определяется кодом,  напи санным  разработчиком).

По своей  сложности компоненты могут значительно отличаться друг от друга. Су ществуют  как  совсем  простые компоненты, так  и достаточно сложные. На  степень сложности компонента нет никаких ограничений. Можно использовать простой ком понент —  метку  TLabel —  или  компонент,  инкапсулирующий  функциональные  воз

можности целой  электронной таблицы.

Для работы с VCL и CLX необходимо знать  типы  существующих  компонентов, а также понимать иерархию компонентов и назначение каждого  уровня этой иерархии. Такая информация приведена в следующем разделе.

Иерархия компонентов

Ниже (рис. 10.1 и 10.2) представлены, соответственно, иерархии классов библио

тек VCL и CLX. Можно заметить, что они очень  похожи друг на друга.

Существует два типа компонентов: визуальный и невизуальный.

 

Рис. 10.1. Иерархия классов VCL

Рис. 10.2. Иерархия классов CLX

Невизуальные компоненты

Как  следует  из названия, невизуальные компоненты не  отражаются в форме вы полняющегося приложения. Данные компоненты обладают  собственным поведени ем, которое разработчик может  изменить, модифицировав с помощью инспектора объектов его  свойства или  создав  обработчики его  событий. В качестве примеров можно   привести классы  TOpenDialog,  TTable и  TTimer.  Как  можно   увидеть  на рис. 10.1 и 10.2, классы всех этих невизуальных компонентов происходят непосредст венно  от класса TComponent.

Визуальные компоненты

Визуальные компоненты (visual components), как и следует из их названия, являются теми компонентами, которые пользователь видит на экране. Визуальные компоненты можно  увидеть,  они  обладают  собственным поведением, но не все из них  способны взаимодействовать с пользователем. Классы  этих  компонентов происходят непосред ственно от класса  TControl. Фактически класс  TControl был  задуман  как базовый для подобных компонентов. Он обладает такими свойствами и методами, которые необходимы для  обеспечения  представления элемента управления на  экране (например Top, Left, Color и т.д.).

НА ЗАМЕТКУ

Иногда термины компонент и элемент управления (control) употребляются в одном и том же контексте, хотя их значения не всегда совпадают. Понятие “элемент управле- ния” относится к отдельным элементам графического пользовательского интерфейса. В Delphi элементы управления всегда являются компонентами, поскольку происходят от класса TComponent. Компоненты — это объекты, которые могут отображаться в па- литре компонентов и изменяться в процессе разработки формы. Компоненты всегда происходят от класса TComponent, но не всегда являются элементами управления, т.е. элементами графического интерфейса.

Визуальные компоненты бывают  двух разновидностей: способные получать  фокус и не способные.

Визуальные компоненты, способные получать фокус

Некоторые типы  элементов управления способны получать  фокус.  Указанное оз начает, что пользователь может  взаимодействовать с такими элементами управления. Эти типы  элементов управления являются потомками класса TWinControl (в библио теке  VCL) или  TWidgetControl (в библиотеке CLX). Потомки класса  TWinControl являются оболочками стандартных элементов управления Windows,  а потомки класса TWidgetControl — оболочками экранных объектов Qt. Эти элементы управления об

ладают следующими характеристиками:

•  Они способны получать фокус и реагировать на события клавиатуры.

•   Пользователь может взаимодействовать с ними.

•    Они способны быть контейнерами (родительскими компонентами) других эле

ментов управления.

•  Они  обладают  собственным дескриптором (в библиотеке VCL) или указателем

(widget в библиотеке CLX).

НА ЗАМЕТКУ

Оба класса — и TWinControl, и TWidgetControl — обладают свойством Handle (дескриптор). Дескрипторы класса TWinControl являются стандартными дескрипто- рами Windows для элементов управления, а дескрипторы класса TWidgetControl — указателями на объект Qt (widget). Оба дескриптора расположены в свойстве Handle для совместимости с прежними версиями и обеспечения возможности взаимной ком- пиляции между CLX и VCL.Более подробная информация о классах TWinControl и TWidgetControl приве

дена в главах 11–14, в разделах, посвященных созданию компонентов для VCL и CLX.Дескрипторы

Дескриптор (handle) представляет собой 32-разрядное число, указывающее на опре- деленный экземпляр объекта в системе Win32 (в данном случае имеются в виду объ- екты Win32, а не Delphi). В Win32 существуют различные типы объектов: объекты яд- ра, пользовательские объекты и объекты GDI. Термин объекты ядра (kernel object) применяют к событиям, объектам отображения файлов и процессам. К пользователь- ским объектам (user object) относят объекты окон, например поля редактирования, раскрывающиеся списки и кнопки. К объектам  GDI относят растровые изображения, кисти, шрифты и так далее.

В среде Win32 каждое окно имеет свой уникальный дескриптор, используемый в каче- стве параметра в некоторых функциях интерфейса API. Delphi инкапсулирует боль- шинство функций интерфейса API Win32 и обеспечивает работу с дескрипторами. Ес- ли необходимо использовать те функции API Windows, для выполнения которых тре- буется  дескриптор, воспользуйтесь потомками  классов  TWinControl и TCustomControl, так как оба эти компонента обладают свойством Handle.

Визуальные компоненты,  не способные получать фокус

Некоторые элементы управления хоть и видны на экране, но не обладают  возможно стью взаимодействия с пользователем, аналогичной элементам управления Windows. Такие  элементы предназначены только  для показа, поэтому  их называют еще  графиче скими элементами (graphical control). Классы  графических элементов происходят непо средственно от класса TGraphicControl (см. рис. 10.1 и 10.2).

В отличие от оконных, графические элементы управления не получают  фокус ввода

(input focus).  Они  очень  полезны, когда нужно отобразить что либо на экране, но не хочется расходовать слишком  много  системных ресурсов, как у оконных элементов управления. Графические элементы не используют ресурсы  Windows, поэтому им и не требуется дескриптор окна  (или  устройство CLX). Поскольку дескриптор окна  отсут ствует,  элемент не может  получать  фокус. К графическим элементам относятся TLa- bel и TShape; они  не могут выступать в качестве контейнеров, поскольку  не способ ны содержать дочерние элементы управления. К графическим элементам управления относятся также TImage, TBevel и TPaintBox.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии