Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7_TKP_ActiveX.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
209.41 Кб
Скачать

7.6.4.2 Деинсталляция установленных элементов ActiveX.

Деинсталляцию элемента ActiveX следует начинать с удаления ссылки на него. Для этого надо открыть искомый файл DPK, убрать ненужные элементы и перекомпилировать пакет. После этого элемент (или элементы) исчезнут со страницы Палитры компонентов. Если вы уверены в том, что этот элемент больше никем не используется, можете удалить информацию о нем из системного реестра (кнопка Remove диалогового окна Import ActiveX). Только после этого можно удалить с диска сам файл OCX или динамическую библиотеку, в которой он содержится.

7.6.5 Реализация компонентов ActiveX в Delphi.

Компоненты ActiveX в Delphi используют те же механизмы, что и обычные объекты СОМ. Классы компонентов наследуют свойства и методы класса-предка и интерфейса-предка. Компоненты ActiveX предоставляют клиентам свои интерфейсы, которые происходят от IDispatch. Для создания экземпляров компонентов ActiveX используются фабрики класса. Информация о компоненте содержится в библиотеке типов.

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

Иерархия классов-предков компонентов ActiveX показывает, что технология ActiveX базируется на функциональности родительских технологий - СОМ и Автоматизация.

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

Дополнительно к этому для компонентов ActiveX создается специальный класс-надстройка, призванный обеспечить взаимодействие компонента ActiveX со своим контейнером Delphi. Классы-надстройки порождаются от класса TOlecontrol.

непосредственным предком любого компонента ActiveX в Delphi является класс TActiveXControl. Происходя от базовых классов объектов СОМ и Автоматизации, он предоставляет своим потомкам механизм использования диспинтерфейсов, необходимых для работы элементов управления ActiveX. Кроме этого, он содержит все базовые интерфейсы ActiveX, перечисленные в табл. 7.2.

Применять конструктор класса нет необходимости, так как для создания экземпляра компонента ActiveX используется фабрика класса. Но при создании компонента будет вызван метод

Procedure Initialize; override;

который вы можете перекрыть и применить для установки начальных значений и инициализации вспомогательных объектов в собственном элементе, управления ActiveX.

Класс предоставляет для использования готовый механизм уведомления о действиях с компонентом. Если необходимо изменить значение какого-либо свойства в ответ на действия пользователя, следует удостовериться в том, что это свойство можно менять. Для этого применяется один из вариантов перегружаемого метода:

function PropRequestEdit(const PropertyName : WideString): Boolean; overload;

function PropRequestEdit(DispID : TDispID): Boolean; overload;

В качестве параметра необходимо задать имя свойства PropertyName или его диспетчерский идентификатор DispID. Если свойство доступно для записи, функция возвращает True.

При изменении значения какого-либо свойства компонента вы можете вызвать один из вариантов перегружаемого метода

procedure PropChanged(const PropertyName : WideString); overload;

procedure PropChanged(DispID : TDispID); overload;

передавая ему в качестве параметра имя свойства PropertyName или его диспетчерский идентификатор DispID. Метод сгенерирует событие onchanged.

При работе с перечисленными методами старайтесь использовать диспетчерские идентификаторы свойств, так как имена свойств обрабатываются внутри методов класса TActiveXControl и все равно преобразуются в идентификаторы.

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

property Control : TWinControl;

Для получения указателей на необходимые интерфейсы можно использовать метод

function ObjQuerylnterface(const IID : TGUID; out Obj): HResult; override;

Обратите внимание, что это просто реализация соответствующего метода интерфейса lUnknown, который, конечно же, поддерживается классом TActiveXControl.

Фабрика класса компонента ActiveX. Для создания экземпляров компонентов ActiveX в Delphi используется фабрика класса. Ее функциональность унаследована от аналогичной фабрики технологии Автоматизация. Фабрика класса для компонентов ActiveX входит в состав класса TActiveXControlFactory.

Среда разработки Delphi является контейнером ActiveX. При создании с помощью мастера ActiveX Control Wizard нового компонента ActiveX в Delphi для него автоматически создается специальный класс-оболочка. Назначение этого класса - предоставлять все методы интерфейсов компонента ActiveX для взаимодействия со средой разработки. Таким образом, реализован механизм адекватного представления и поведения элементов управления ActiveX в среде разработки Delphi. Основные функции класса-надстройки реализованы в классе TOlecontrol. Его свойства и методы обеспечивают необходимое управление компонентом ActiveX. Обычно разработчику нет необходимости использовать методы этого класса напрямую.