ActiveX в Delphi

         

Что такое элемент управления ActiveX?



Ответ на вопрос, заданный в заголовке данного раздела, может быть разным. Все зависит от того, с какой точки зрения смотреть на ActiveX. С точки зрения разработчика, элемент управления ActiveX - это нечто, обладающее свойствами, событиями и методами (практически как любой другой компонент). Разработчик на Delphi может не иметь представления о том, что такое СОМ, и, в то же время, успешно использовать элементы управления ActiveX в своих приложениях.
С точки зрения компонентной модели объектов (СОМ), элемент управления ActiveX представляет собой сервер автоматизации, который реализован в виде DLL и исполняемый в одном процессе с вашим приложением. Элементы управления ActiveX допускают визуальное редактирование, т. е. вы можете изменять значения их свойств, методов, писать обработчики событий точно так же, как вы делали это для компонентов из VCL Delphi. Вообще, следует заметить, что идея технологии ActiveX была частично реализована достаточно давно. Еще в Microsoft Visual Basic для разработки 16-разрядных приложений были использованы так называемые модули расширения VBX. Разработчики быстро поняли все преимущества данной технологии и создали тысячи модулей VBX. Идея компонентной разработки понравилась многим, и по ее принципу стали создавать многие средства для разработки приложений, к числу которых относится и Delphi.
Данная технология постепенно переросла в 32-разрядную технологию ActiveX.



Необходимость использования ActiveX



Вам могло и не приходить в голову, что вы уже использовали элементы управления ActiveX при написании своих приложений. Дело в том, что многие элементы управления ActiveX, которые зарегистрированы в системном реестре Windows, уже установлены в палитру компонентов Delphi и внешне ничем не отличаются от обычных компонентов Delphi. Мы не будем останавливаться на том, какие компоненты являются элементами управления. Вместо этого посмотрим, когда возникает необходимость использовать ActiveX.
Обычно такая необходимость возникает, когда вы хотите расширить функциональные возможности своего приложения за счет возможностей уже зарегистрированных в системе приложений. Например, если вы хотите создать собственный обозреватель Web, вам необязательно начинать писать его с нуля. Есть ведь великолепное ядро для обозревателя Web, которое используется в приложении Microsoft Internet Explorer (SHDOCVW.DLL). Вашей задачей здесь является лишь подключение данного ядра (которое является элементом управления ActiveX) к своему приложению и работа с ним.
Отметим, что в пятой версии Delphi в палитру компонентов была добавлена вкладка Internet, которая предоставляет возможность разработчику создавать приложения на основе ядра Microsoft Internet Explorer.



Внесение элемента управления ActiveX в палитру компонентов





Вместе с Delphi поставляется несколько компонентов ActiveX, которые были сделаны различными разработчиками, но, скорее всего, вам понадобится самим добавлять новые элементы ActiveX в палитру компонентов Delphi.
Установка нужного элемента управления ActiveX начинается с выбора пункта главного меню Component/Import ActiveX Control (Компонент/Импорт элемента управления ActiveX). Появится диалоговое окно (рис. 3.22), содержащее сведения обо всех элементах управления ActiveX, которые были зарегистрированы в системном реестре Windows.
Рассмотрим данное диалоговое окно.
В верхней части окна перечислены зарегистрированные в системе элементы ActiveX. Список Class names (Имена классов) отображает названия классов, имеющихся в данном элементе управления. На рис. 3.22 мы видим, что у выбранного элемента ActiveX имеются два встроенных класса TDHTMLEdit и TDHTMLSafe.
Выпадающий список Palette page (Вкладка палитры) служит для выбора вкладки палитры компонентов, на которую будет размещен выбранный элемент ActiveX. По умолчанию, это вкладка ActiveX.
Следующие два поля для ввода Unit dir name (Имя директории для модуля) и Search path (Путь для поиска) предназначены, соответственно, для указания директории, в которой будет размещен модуль элемента ActiveX, и путь поиска данного модуля для компилятора Delphi.


Рис. 3.22. Диалоговое окно импорта элементов управления ActiveX
Выберите тот же элемент управления ActiveX, какой изображен на рис. 3.22. Если такого элемента у вас нет, то возьмите любой другой, но в дальнейшем мы будем описывать установку именно этого элемента управления.
После того как вы выбрали данный элемент управления, нажмите кнопку Install (Установить). Появится окно Install (Установка) (рис. 3.23).

Примечание
Другая кнопка, Create Unit (Создать модуль), позволяет создать так называемый файл представления (wrapper). Данный файл - это описание библиотеки типов, он содержит описание всех методов, событий и свойств, которые находятся в элементе управления. Содержимое данного файла написано на языке Object Pascal. Имя файла состоит из двух частей: имени элемента ActiveX и строки _TLB.PAS. Нажав кнопку Create Unit (Создать модуль) вы лишь создадите данный файл, после чего можете посмотреть его содержимое. Для продолжения установки элемента управления вам нужно воспользоваться кнопкой Install (Установка). Данное окно содержит две вкладки Into existing package (В существующий пакет) и Into new package (В новый пакет). Вы должны выбрать, в какой пакет хотите включить новый элемент управления.

Примечание
Рекомендуется для элементов управления ActiveX создать свой собственный пакет. Это позволит экономнее использовать ресурсы. Мы в целях упрощения описания установки не будем создавать новый пакет.

Добавим наш элемент управления в пакет, предлагаемый Delphi по умолчанию (dclusrSO.dpk).


Рис. 3.23. Окно установки элемента управления в пакет
После нажатия кнопки ОК в окне Install (Установка) Delphi откомпилирует пакет dclusrSO.dpk. В результате, содержимое пакета должно выглядеть, как представлено на рис. 3.24.


Рис. 3.24. Содержимое пакета dclusr5O.dpk после установки нового элемента управления ActiveX
Теперь перейдем к вкладке ActiveX палитры компонентов и посмотрим, какие изменения там произошли (рис. 3.25).


Рис. 3.25. Содержимое вкладки ActiveX
Как вы можете видеть, на вкладке появились пиктограммы двух новых компонентов: DHTMLEdit И DHTMLSafе.
Теперь вы можете размещать любой из этих компонентов на ваших формах и пользоваться ими так же, как и любыми другими компонентами Delphi, То есть, используя инспектор объектов, вы можете установить значения необходимых свойств, написать обработчики событий, и т. д.
Для того чтобы деинсталлировать элемент управления ActiveX, вам нужно открыть файл пакета, в который был установлен ActiveX, и убрать ненужные элементы. После этого необходимо заново откомпилировать пакет. Эти действия приведут к удалению элементов с палитры компонентов.

Глава 11 Содержание Глава 13