Internet Explorer может служить не только не только клиентом ActiveX Document, но быть и сервером ActiveX Document. Это означает, что любое приложение может использовать Internet Explorer для просмотра файлов формата HTML.
Спецификация ActiveX Documents - дополнение к спецификации OLE Documents, технологии составного документа OLE. Также как и активные документы OLE, приложения, поддерживающие ActiveX Documents, могут работать как контейнеры (клиенты), обеспечивающие показ документов ActiveX, или как серверы так, что любая другая программа может их использовать для своей работы.
1.6. Средства разработки компонентов ActiveX
Программисты могут создавать компоненты ActiveX, используя любой язык программирования, включая давно знакомые Visual Basic, Visual C++, или новые средства программирования, такие как Java.
С помощью Visual Basic 5.0, программисты смогут писать компоненты ActiveX и конвертировать существующий код в VB Script простой манипуляцией мышью. Все макросы, которые использовались в приложениях Microsoft Office, могут быть легко перенесены на страницы Web. Если программист использует новый язык Visual J++, он увидит снова знакомый интерфейс Microsoft Developer's Studio-привычный отладчик и редактор - и сможет создавать машинно-независимые программные компоненты Java, способные выполняться в Internet Explorer 3.0.
Если пользователь хочет быстро с нуля разрабатывать компоненты ActiveX, он может использовать Microsoft ActiveX Development Kit (MADK). Он включает в себя все средства и информацию, необходимые для этого.
Web-мастера могут управлять своими серверами с помощью Microsoft FrontPage. Этот продукт распространяется с большим количеством мастеров (wizards), позволяющих быстро создавать страницы с таблицами, фреймами и другими интересными элементами оформления, включая программные элементы ActiveX.
1.6.1. Создание ActiveX-форм
По сути, Delphi предоставляет возможность для построения приложений, внедряемых в Web-страницы. Для того чтобы создать ActiveX-приложение, нужно выбрать следующую последовательность меню: File | New | ActiveX | ActiveX Form.
В появившемся диалоговом окне (рис. 12.1) в поле New ActiveX Name следует вписать имя создаваемого приложения. Названия файла проекта и пока единственного модуля формы изменяются автоматически в соответствии с вводимым именем проекта, но могут быть произвольными. Позже, при сохранении файлов проекта на диске, их имена и расположение можно будет менять.
Выпадающее меню с названием Threading Model содержит пункты, устанавливающие режим работы с потоками создаваемого элемента управления. Дело в том, что спецификация ActiveX разрешает одновременное использование серверов автоматизации в нескольких режимах:
· Single — создает очередь при попытке параллельного использования одного элемента управления
Рис. 1. Диалоговое окно выбора параметров создаваемого ActiveX-приложения
· partment — динамически рождает новый экземпляр сервера в памяти, и работа с каждым из них ведется независимо.
· Free — реализует многопоточный режим работы с компонентом. При этом единственный экземпляр последнего обеспечивает реализацию всех запросов. Данный тип характеризуется достаточно сложной реализацией в связи с необходимостью контроля за целостностью данных, но экономит ресурсы компьютера.
· Both — обеспечивает работу клиентов, рассчитанных на взаимодействие по любому из двух предыдущих принципов
Опция Make Control Licensed позволяет включить режим зашиты элемента управления ActiveX от нелегального использования путем добавления в дистрибутив элемента специального лицензионного файла. Опция Include Version Information определяет возможность идентификации версии создаваемого элемента управления. При включении этой опции компилятор каждую новую версию ActiveX-формы помечает новым номером, что особенно удобно при отладке, поскольку обращение к новой версии элемента управления исключает использование старой.
Опция Include About Box предоставляет возможность создания вместе с основной формой Web-приложения маленькую форму с указанием короткой сопроводительной информации.
После того как установлены необходимые опции и введено название проекта, можно нажимать кнопку ОК.
При создании элементов управления открывается рабочая среда, несколько отличная от той, которая активизируется при написании обычного приложения.
Прежде всего, вместо обычного проекта создается библиотека, как при написании DLL-модуля. Кроме того, создаваемая форма уже принадлежит не к классу TForm, а к классу TActiveFormx. В программном модуле уже описаны процедуры и функции, обеспечивающие установку и извлечение свойств формы.
1.6.2. Добавление внешних свойств в ActiveX-форму
При разработке элементов управления реализуются достаточно сложные механизмы создания абстрактных интерфейсов и наследования. Разработчики среды Delphi избавили программистов от необходимости самостоятельно проектировать интерфейсы к создаваемым СОМ-серверам. Если вы хотите что-либо откорректировать в вами же предложенном варианте, то это можно сделать вручную, на базе уже сгенерированного кода.
Доступ к переменным, которые используются в программе, может быть осуществлен только в том случае, если они объявлены свойствами класса, представляющего ActiveX-форму, а именно — ActiveFormX.
Для добавления переменной нужно выполнить следующую последовательность шагов, вызывая соответствующие пункты меню: Edit | Add to Interface. При этом на экране появится окно, приведенное на рис. 2
Рис. 2. Меню добавления свойств, методов, событий
Это меню позволяет добавить описание нового свойства (равносильно, как и метода или события) сначала в класс, являющийся интерфейсом класса формы (его наличие вызвано особенностью реализации СОМ-объектов), а затем в сам класс формы. При этом создается шаблон процедуры, которая позволяет выполнить какие-либо действия при установке этого свойства и функции, которая должна возвращать значение данного свойства. Эти два метода выполняют задачи, аналогичные возникающим при описании свойств классов языка Object Pascal. Для добавления свойства его нужно описать аналогично предварительной декларации при описании классов. Например, property Myinfo: byte. При нажатии кнопки ОК интерфейс и реализация создаваемого объекта обновятся, в соответствии с внесенными изменениями.
Обратите внимание, что типы данных, используемые при описании свойств, не полностью совпадают с типами Object Pascal, и их перечень ограничен для совместимости с другими средствами разработки и типами, используемыми в Windows.
В табл. 1 приведем наиболее используемые типы данных.
Таблица 1. Некоторые типы данных, используемые при обмене информацией между сервером автоматизации и клиентом
Тип данных | Описание |
Byte | Аналогичен типу Byte из ObjectPascal |
Currency | Аналогичен типу Currency Object Pascal |
Double | Аналогичен типу Double Object Pascal |
WideString | Аналогичен типу WideString WideString из Object Pascal |
При работе с внешними переменными нельзя использовать тип string. Вместо него, как видно из таблицы, можно применить нуль-терминованные строки WideString.
1.6.3. Загрузка компонентов ActiveX
Когда пользователь загружает Web-страницу, на которой есть ссылка на элемент управления ActiveX, браузер проверяет настройки безопасности компьютера, и, если они позволяют, посылает на сервер запрос на передачу двоичного кода скомпилированного компонента. Сервер, получив запрос, проверяет, доступен ли запрашиваемый файл, и если он доступен, то передает его клиенту. После получения кода компонента он должен быть зарегистрирован в системе (реестре). Об этом, опять-таки исходя из настроек безопасности, выдается предупреждение клиенту, с указанием информации о наличии цифровой подписи, и при существовании последней, информация о производителе загруженного элемента управления. Если пользователь разрешит, то элемент управления регистрируется и запускается на выполнение. При этом, как правило, его окно отображается в заранее определенной области Web-страницы. Кроме того, браузер передает ему параметры, которые могли быть указаны на Web-странице, в которую внедрен элемент управления ActiveX. Благодаря наличию такой возможности, серверу достаточно динамически формировать HTML-код, с указанием значений используемых параметров, чтобы заставить динамически работать элемент управления ActiveX. Процесс внедрения ActiveX-компонента осуществляется с использованием элемента OBJECT языка HTML, которому соответствует тег <OBJECT>, атрибуты которого описаны в следующем разделе.
1.6.4. Тег <OBJECT>языка HTML
Для того чтобы внедрить в документ HTML различные ActiveX-объекты или Java-апплеты, используется тег <OBJECT>.
Он имеет следующие основные атрибуты:
· classid — содержит уникальный 128-битный идентификатор, под которым элемент управления регистрируется в системе.
· codebase — указывает URL, где расположен компонент.
· standby — может применяться для задания текста, который будет отображаться во время загрузки компонента.
· Height — содержит высоту области, отводимой под элемент управления.
· width — содержит ширину области, отводимой под элемент управления.
· Name — применяется в контексте форм, если элемент управления служит для приема клиентских сведений с целью их последующей отправки на сервер.
К этим атрибутам, характеризующим базовые сведения об объекте, добавляются параметры, которые автоматически передаются браузером объекту для использования.