Глава 5. Создание элементов управления ActiveX

Большинству пользователей услышавших термин АсtiveX на ум сразу приходят элементы управления ОСХ по-новому названные в очередном маркетинговом трюке компании Microsoft. В некотором смысле это так Microsoft действительно использует термин ActiveX для обозначения технологии базирующихся на модели СОМ. Но аббревиатура OLE уже не охватывает всех этих технологий. Microsoft настолько расширила определение OLE, что разработчики уже давно считают сопутствующие технологии чем-то отдельным от OLE. Поэтому в профессиональную лексику был введен термин ActiveX, используемый для обозначения всех базирующихся на СОМ технологии, которые существуют на данный момент и будут созданы в будущем. На сегодняшний день ActiveX включает следующие технологии:


Библиотеки ActiveX (внутренние серверы)

Серверы автоматизации (внутренние и внешние серверы)

Элементы управления ActiveX

Формы ActiveForm (комбинированные элементы управления ActiveX)

Страницы свойств

Среда разработки Delphi ActiveX (DAX)

Чтобы упростить разработку базирующихся на стандарте ActiveX технологий, необходима продуманная и спланированная среда которая инкапсулирует в себе сложность множества интерфейсов и функции ActiveX и OLE. Разработчики Delphi создали механизм, с помощью которого любой элемент управления Windows, порожденный классом TWinControl, можно превратить в элемент управления ActiveX. Вы можете использовать существующие компоненты VCL и превратить их в элементы ActiveX, которые будут полезны в других средах разработки, например в Visual Basic.

Для облегчения преобразования разработчики Delphi создали среду Delphi ActiveX (DAX). Она упрощает разработку серверов СОМ, типизированных объектов СОМ, серверов автоматизации, элементов управления ActiveX, форм ActiveForm и страниц свойств. Давайте ближе познакомимся со средой DAX.

Объекты ActiveX в среде DAX

Ниже показана иерархия классов среды DAX, которые поддерживают объекты СОМ, типизированные объекты СОМ, серверы автоматизации, элементы управления ActiveX и формы ActiveForm.

TComObject

TTypedComObject

TAutoObject

TActiveXControl

TCustomForm

TActiveForm

Класс TCustomForm вместо класса TForm использован в качестве предка класса TActiveForm, так как в TCustomForm включены только свойства и методы, уместные для формы ActiveX.

Страницы свойств в среде DAX

Другой частью среды DAX являются страницы свойств, которые используются в различных средах программирования для изменения значений свойств элементов управления на этапе разработки. Страницы свойств часто оказываются устаревшими, так как среды программирования обладают различными реализациями инспекторов свойств объектов, которые позволяют оперировать свойствами объектов во время разработки приложения. Но несмотря на это в создаваемые элементы управления ActiveX нужно всегда включать страницы свойств. Даже если эти страницы не будут использоваться ни для чего больше, то они хотя бы предоставят разработчику способ построения специальных окон редактирования более сложных свойств элемента управления. Как будет показано ниже, в Delphi можно довольно просто создавать страницы свойств. Ниже показана иерархия классов, которая поддерживает создание страниц свойств в Delphi.

TCustomForm

TPropertyPage

TActiveXProperty Page

[TMyPropertyPage]

При создании новая страница свойств будет наследована от класса TPropertyPage.

Фабрики объектов в среде DAX

Delphi предоставляет клиентам (контроллерам) объекты серверов СОМ посредством использования фабрик (factories) объектов, которые регистрируются с глобальным сервером СОМ Delphi СОМ Server (ComServer), определенным в модуле ComServ. Сервер СОМ Delphi обрабатывает все запросы объектов СОМ и создает запрашиваемые объекты, если такие зарегистрированы. Классы фабрик объектов используются для поддержки объектов СОМ, типизированных объектов СОМ, объектов автоматизации элементов управления, которые показаны ниже в порядке наследования.

TComObjectFactory

TActiveXPropertyPageFactory

TTypedComObjectFactory

TAutoObj ectFactory

TActiveXControlFactory

TActiveFormFactory

Классы TActiveXControlFactory и TActiveFormFactory используются для регистрации элементов управления ActiveX и форм ActiveForm.

Что же делают эти объекты? Они инкапсулируют интерфейс IClassFactory, используемый для создания объектов с ответствующего класса каждый раз, когда клиентское приложение запрашивает определенный объект. На эти классы также возложена ответственность за внесение записей в реестр Windows в соответствии с типом класса фабрики. Например, класс TActiveXControlFactory вносит в реестр информацию о сервере ActiveX и соответствующей библиотеке типов.

Получив представление о средствах Delphi, поддерживающих разработку объектов ActiveX, рассмотрим инструмент Delphi для создания объектов ActiveX. Как это ни странно, но начать придется не с кодирования, а с документации. Если быть более точным, то сначала придется создать библиотеку типов, которая будет использоваться в Delphi для генерации шаблон кода, базирующегося на иерархии классов среды DAX. Позже созданный шаблон будет заполнен, откомпилирован, зарегистрирован и т. д. Следовательно, прежде чем приступить к созданию объектов ActiveX, следует усвоить, что такое информации о типах и как использовать редактор библиотек типов (Type Library Editor) Delphi. Обозначенные аспекты описаны в следующем разделе.

Библиотеки типов

Библиотеки типов — это составные документы OLE, в которых содержится информация об объектах СОМ, элементах управления ActiveX и объектах автоматизации. Информация о типах включает перечисления, свойства и методы интерфейсов.

Библиотека типов предназначена для предоставления другим приложениям и средам программирования информации о составных объектах, которые в ней содержатся. В процессе разработки элементов управления ActiveX и объектов автоматизации Delphi сохраняет информацию о типах в файле с расширением TLB, который в качестве ресурса компонуется в модуль DLL или ЕХЕ.

В следующих разделах будут коротко описаны возможности редактора библиотек типов Delphi и типы, которые создаются для элементов управления ActiveX, форм ActiveForm, объектов автоматизации и т. п.

Редактор библиотек типов

Редактор библиотек типов Delphi используется для просмотра и редактирования библиотек типов. Основой интерфейса редактора является панель Object List (рис. 3.1), с помощью которой пользователь может изменять, добавлять и удалять элементы библиотеки типов. Элементами библиотек типов являются составные классы, свойства и методы интерфейсов и перечисления. Панель Object List представляет элементы в виде дерева объектов. В зависимости от типа элемента, выбранного в панели Object List, в правой части редактора библиотек типов появляются различные вкладки. Возможно, это будут вкладки Attributes, Members и Uses.

Для редактирования библиотеки типов текущего проекта выполните команду View/Type Library. Чтобы просмотреть библиотеку типов, не являющуюся частью проекта, выберите пункт меню File/Open. После этого в списка File of type выберите строку Type Library (*.tlb;*.dll;*.ocx;*.exe;*.olb), чтобы вывести все файлы, которые могут содержать информацию о типах.

Теперь более детально рассмотрим каждый элемент библиотеки типов. Начнем с информации о библиотеке.

Информация о библиотеке типов

Каждая библиотека типов включает раздел, описывающий саму библиотеку, — элемент библиотеки типов. Когда этот элемент выбран в панели Object List (см. рис. 3.1), в правой части экрана редактора библиотеки типов появляются две вкладки: Attributes и Uses. Два следующих раздела описывают назначение вкладок Attributes и Uses в элементе библиотеки типов.

Вкладка Attributes в описании библиотеки типов

Во вкладке Attributes (атрибуты) содержится общая информация и характеристики библиотеки типов. Показанные ниже атрибуты и флаги появляются в этой вкладке, когда в панели Object List выбран элемент библиотеки типов (см. рис. 3.1). В табл. 3.1 перечислены все атрибуты, а в табл. 3.2 — все флаги библиотеки типов.

Рис. 3.1. Редактирование данных о библиотеке типов

Вкладка Uses в описании библиотеки типов

Во вкладке Uses показаны все библиотеки, на которые ссылается просматриваемая библиотека. С помощью ссылок на другие библиотеки типов можно заимствовать определение элементов, таких как пересечение или интерфейсы. Это поможет разработчику определить собственные интерфейсы в собственной библиотеке типов. Например, основной интерфейс сервера автоматизации порожден от интерфейса IDispatch, но вам не придется изобретать колесо, так как Delphi автоматически создает ссылку на библиотеку типов STDOLE32. TLB, в которой определен интерфейс IDispatch. Библиотека STDOLE32.TLB является основной библиотекой типов Windows.

С каждой записью вкладки Uses связано две части информации. Первая часть — имя библиотеки, на которую создается ссылка, вторая — идентификатор GUID, который идентифицирует библиотеку типов в реестре Windows.

Перечисления (Enum) в библиотеках типов

Перечисления в библиотеках типов практически не отличаются от перечислений языка Object Pascal. Перечисление в библиотеке типов — это коллекция связанных констант, используемая как тип данных во всех остальных элементах библиотеки для определения свойств или методов. Кроме того, в зависимости от среды программирования константы перечисления могут использоваться с объектом ActiveX внутри среды программирования. В следующих двух разделах рассматривается назначение вкладок Attributes и Members в описании перечислений.

Вкладка Attributes в описании перечисления

На рис. 3.2 показано перечисление (Enum), выбранное в окне редактора библиотек типов Delphi с вкладкой Attributes в правой части окна редактора. В табл. 3.3 перечислены все возможные атрибуты, которые можно использовать с перечислением.

Рис. 3.2. Редактирование перечисления в библиотеке типов


Вкладка Members в описании перечисления

Во вкладке Members определяются сами константы, составляющие перечисление. Формат определения константы показан ниже.

<Имя константы> = <Значение константы>;

helpstring = 'Строка описания';

Настоятельно рекомендуется указывать строку описания для членов перечисления, так как приложения, использующие ваш объект СОМ, могут зависеть от строк описания. На рис. 3.3 показана вкладка Members описания перечисления.

Рис. 3.3. Редактирование элементов перечисления в библиотеке типов

Элементы Interface и Displnterface в библиотеках типов

Интерфейс в библиотеке типов — это коллекция определении свойств и методов. Клиент может получить доступ к интерфейсам либо посредством таблицы виртуальных методов, либо с помощью специального интерфейса OLE I Dispatch, который позволяет использовать свойства и методы объектов через уникальный идентификатор или DispID. Элемент Displnterface определяет интерфейс, доступ к которому можно получить только через интерфейс IDispatch. Двойной интерфейс (dual interface) — это интерфейс, доступ к которому можно получить и через таблицу виртуальных методов, и через интерфейс IDispatch. В следующих двух разделах рассматривается назначение вкладок Attributes и Members в описании интерфейсов.

Вкладка Attributes в описании интерфейса

На рис. 3.4 показан интерфейс, выбранный в окне редактора библиотек типов, с вкладкой Attributes в правой части окна редактора. В табл. 3.4 перечислены все возможные атрибуты, которые можно использовать в описании интерфейса, а в табл. 3.5 — все флаги, используемые в описании интерфейса.

Рис. 3.4. Редактирование атрибутов интерфейсов в библиотеке типов

Вкладка Members в описании интерфейса

Вкладка Members в описании интерфейса содержит свойства интерфейса и методы, определенные в этом интерфейсе. За исключением незначительных отличий, синтаксис объявлений констант и методов совпадает с синтаксисом языка Object Pascal. Первое отличие проявляется в том, что после описания каждого свойства и метода должен следовать уникальным идентификатор или DispID. Обычно значения DispID начинаются с 1 и увеличиваются на 1 для каждого следующего элемента. Вторым отличием являются ключевые слова readonly и writeonly, которые позволяют запрещать запись и чтение свойств соответственно. Ниже показан пример определения методов и свойств.

property FrameCount: Integer; readonly; dispid 1;

property Play(FromFrame, ToFrame: Smallint; Count: Integer); dispid 2;

property OpenDatabase[DatabaseName, TableName, UserName, Password: WideString]: WordBool; dispid 3;

Последним является определение параметризованного свойства с разрешением только чтения. В примере это свойство использовано не только для демонстрации такого типа свойств, но и потому, что некоторые серверы ActiveX предпочитают использовать параметризованные свойства вместо методов. На рис. 3.5 показана вкладка Members описания интерфейса в редакторе библиотек типов Delphi.

Рис. 3.5. Редактирование членов интерфейса в библиотеке типов

Если для описания интерфейса используется инструкция Displnterface, то для определения методов и свойств интерфейса можно использовать только совместимые с автоматизацией OLE типы данных. Совместимыми с OLE являются следующие типы данных: Byte, Smallint, Integer, Single, Double, Currency, TDateTime, WideString, WordBool и OleVariant. Для передачи многомерных структур данных можно использовать массивы данных типа OleVariant.

Вкладка Attributes в описании свойств и методов интерфейса

На рис. 3.6 показано свойство интерфейса, выбранное в окне редактора библиотек типов, с вкладкой Attributes в правой части окна редактора. В табл. 3.6 перечислены все атрибуты, которые используются в определении членов интерфейса, а в табл. 3.7 — все возможные флаги.

Рис. 3.6. Редактирование атрибутов в библиотеке типов


Составные классы (CoClass) в библиотеках типов

Составной класс в библиотеке типов (CoClass) представляет весь элемент управления ActiveX, объект автоматизации или специальный объект СОМ. Составной класс включает интерфейсы и диспинтерфейсы, которые предоставляются клиентскому приложению. В следующих двух разделах рассматривается назначение вкладок Attributes и Members редактора библиотек типов в описаниях классов составных объектов.

Вкладка Attributes в описании классов составных объектов

В табл. 3.8 перечислены все атрибуты, а в табл. 3.9 — флаги, которые используются в описаниях составных классов.


Вкладка Members в описании составного класса

Во вкладке Members в описании составного класса можно добавлять и удалять интерфейсы и перечисления, которые составляют класс СОМ. В рассматриваемой вкладке содержится следующая информация.

Имена интерфейсов и диспинтерфейсов, которые реализованы в классе СОМ.

Идентификаторы GUID интерфейсов и диспинтерфейсов, реализованных в классе СОМ.

Указания, является ли интерфейс или диспинтерфейс источником сообщений.

Указания, является ли интерфейс или диспинтерфейс программируемым интерфейсом, используемым в языке программирования макросов, таких как Word Basic, Visual Basic, Delphi, Object PAL и Excel Basic.

Указания, запрещено ли использование интерфейса или диспинтерфейса в языках программирования макросов таких как Word Basic, Visual Basic, Delphi, Object PAL и Excel Basic. Чтобы добавить интерфейсы в составной класс или удалить их, нужно щелкнуть правой кнопкой мыши в облает вкладки Members. На экране появится контекстное меню, в котором нужно выбрать команду Insert Interface или Remove Interface. С помощью контекстного меню можно также установить флаги Source, Default и Restricted. Новые интерфейсы можно выбирать из текущей библиотеки или из библиотек, на которые ссылается текущая библиотека типов.

Элементы управления ActiveX

Теперь займемся увлекательным делом — создадим элементы управления ActiveX. Рассмотрим, что собой представляв ActiveX и чем элементы управления ActiveX лучше или хуже стандартных компонентов Delphi на базе библиотек VCL.

Технология ActiveX компании Microsoft представляет собой технологию ОСХ, переделанную для обеспечения передачи элементов управления через службы Internet, в основном через World Wide Web. Я уверен, что читатель спросит „Это все хорошо, но как технология ActiveX может помочь мне?“. Но неужели вам не хочется создать элементы управления, которые можно использовать не только в Delphi, но и в таких средах программирования, как Borland C++ Builde Visual C++ и Visual Basic? Технология ActiveX предоставляет вам такую возможность.

Чтобы использовать эту возможность, Delphi предлагает с помощью среды DAX заключить потомка класса TWin Control в элемент управления ActiveX. Ниже перечислены платформы, на которых сертифицированы для выполнены элементы управления ActiveX, поставляемые с Delphi.

Borland Delphi версии 2 и 3.

Borland C++ Builder.

Borland Paradox 8.

Borland IntraBuilder.

Microsoft Visual C++.

Microsoft Visual Basic версии 4 и 5.

Microsoft Internet Explorer 3.01.

Microsoft ActiveX Control Pad.

Microsoft Frontpage.

Создание элемента управления ActiveX предусматривает выполнение следующих этапов.

Элемент управления VCL должен быть вставлен в палитру компонентов Delphi и должен быть потомком класса TWinControl. Чтобы создать элемент управления ActiveX, являющийся потомком TGraphicControl. в большинстве случаев достаточно изменить базовый класс на TCustomControl. Этот способ использован в примере, который будет приведен немного позже.

Запустите мастера ActiveX Control, выбрав команду File/New и дважды щелкнув на пиктограмме ActiveX Control во вкладке ActiveX. В окне мастера выберите компонент VCL, который нужно преобразовать в элемент ActiveX, укажите имя элемента ActiveX, включите или отключите информацию о лицензировании, версии и т. п. После щелчка на кнопке OK Delphi создаст библиотеку типов со всеми свойствами, объявленными как public и published, методами и событиями. Дополнительно создаются два файла исходного кода: в одном из них содержатся определения из библиотеки типов (интерфейсы, диспинтерфейсы и т. д.), а во втором — реализации методов интерфейса, определенных в первом файле.

В процессе создания библиотеки типов Delphi может преобразовать не все конструкции языка то ли потому, что нет смысла преобразовывать отдельные конструкции, то ли потому, что она не знает, как преобразовать некоторые конструкции языка Object Pascal. Независимо от причины, по которой преобразование не выполнилось, в определение элемента ActiveX можно легко добавить любые свойства, методы и события. Для этого откройте библиотеку типов (с помощью команды View/Type Library), внесите необходимые изменения и щелкните на кнопке Refresh панели инструментов редактора библиотек типов, что позволит Delphi обновить код.

Создайте код всех методов Get и Set, в которых не реализована необходимая функциональность или которые оставлены пустыми, как добавления к библиотеке типов. Это относится и к обработчикам событий.

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

Откомпилируйте и зарегистрируйте элемент управления.

ОСХ-файл можно импортировать в любую среду разработки, поддерживающую элементы управления ActiveX, которые созданы в Delphi.

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

Для регистрации элемента управления ActiveX нужно просто воспользоваться какой-либо утилитой или приложением, которое вызывает экспортируемую элементом ActiveX функцию DllRegiaterServer. Эта функция знает, как внести в реестр Windows записи об элементах ActiveX, данные о фабриках объектов которых зарегистрированы в глобальном объекте сервера СОМ среды программирования Delphi. Нами рассмотрена только одна фабрика объектов (TActiveXControlFactory), но для каждой страницы свойств существует своя фабрика объектов.

Чтобы зарегистрировать элемент управления ActiveX, воспользуйтесь командой Run/Register ActiveX Server.

Рис. 3.10. Диалоговое окно Import ActiveX

Чтобы проверить созданный элемент ActiveX в действии, установите его в среде Delphi. Для этого выберите команду Component/lnstall ActiveX control, и на экране появится диалоговое окно Import ActiveX (рис. 3.10).

Если в списке зарегистрированных элементов управления нет библиотеки PieXControlLib, то следует щелкнуть на кнопке New и добавить в список файл PieXControl.dll. После щелчка на кнопке OK Delphi автоматически вызовет функцию DllRegisterServer, и элемент управления появится в списке зарегистрированных элементов управления. Выберите созданный элемент в списке и щелкните на кнопке Add to package. Здесь есть две возможности: создать новый модуль-оболочку для элемента ActiveX и вставить созданный элемент в уже существующий модуль. Я бы посоветовал вставить созданный элемент в модуль PieLib.dpk, после чего нужно только перекомпилировать модуль, так как он уже установлен.


После выполнения описанных выше действии на вкладке ActiveX в палитре компонентов Delphi появится элемент управления PieX. Вот и все о создании, регистрации и установке элементов управления ActiveX в среде программирования Delphi 4. В других средах программирования регистрация и установка элементов ActiveX реализованы иначе, поэтому обратитесь к руководству по продукту для получения подробных инструкции.

Создание форм ActiveForm

Форма ActiveForm — это набор визуальных или невизуальных компонентов для создания смешанного элемента управления ActiveX. Другими словами, визуальные элементы управления ActiveX можно совмещать для создания простого комбинированного элемента ActiveX. Кроме того, можно создавать целые приложения, обладающие одной формой, которые будут распространяться как формы ActiveForm.

Использование невизуальных элементов означает, что в формах ActiveForm можно использовать объекты BDE для доступа к базам данных, или, что еще лучше, для доступа к данным можно использовать технологию брокеров данных производства Borland (Data Broker), которая разрабатывалась специально для доступа к распределенным множествам данных в рамках сети, такой как Internet.

Что касается выполняемых в формах ActiveForm действий, то тут нет каких-то особых ограничений. Единственным отличием от стандартных форм Delphi является то, что клиентам предоставляются только те свойства, методы и события, которые связаны непосредственно с формой ActiveX. Это означает, что все свойства, методы и события компонентов VCL, используемых в форме, не будут предоставляться клиентам. Названные элементы являются внутренними по отношению к форме ActiveForm.

Если необходимо предоставить клиентам доступ к внутренним свойствам компонентов VCL, то следует добавить в форму ActiveForm новые свойства и методы, как в процессе создания элемента управления ActiveX. За исключением таких случаев, методы свойства Get и Set будут получать и устанавливать значения внутренних компонентов, а не основного элемента управления VCL.

Процесс создания формы ActiveForm в основном совпадает с процессом создания элемента управления ActiveX, но для ясности ниже перечислены основные его этапы:

Мастера ActiveForm можно запустить с помощью команды File/New и двойного щелчка на пиктограмме ActiveForm, расположенной во вкладке ActiveX. Форма ActiveForm всегда „облачается“ в компонент TActiveForm, следовательно, от пользователя требуется только указать имя создаваемого элемента ActiveX, имя модуля реализации, имя проекта, включить или отключить лицензирование и т. п. После щелчка на кнопке OK Delphi создаст библиотеку типов, в которую войдут все общедоступные и опубликованные свойства, методы и события класса TActiveForm. Кроме того, Delphi создаст два файла исходного кода. Один — с информацией из библиотеки типов (интерфейсы, диспинтерфейсы и т. д.), второй — для реализации методов интерфейса, объявленных в первом файле.

Вставьте в форму ActiveForm один или несколько визуальных или невизуальных компонентов.

После этого добавьте в форму одно или несколько свойств, методов или событий. Для этого откройте редактор библиотек типов (View/Type Library) и внесите необходимые изменения. Затем щелкните на кнопке Refresh, расположенной на панели инструментов редактора библиотек типов. Это позволит Delphi создать код оболочки для добавленных в библиотеку типов элементов.

Создайте код для всех методов Get и Set, функциональность которых не реализована полностью или которые оставлены пустыми для дополнений библиотеки типов. Это относится и к обработчикам событий.

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

Откомпилируйте и зарегистрируйте созданный элемент управления.

Теперь созданный файл ОСХ можно импортировать в любую среду программирования, которая поддерживает элемент управления ActiveX.

Распространение элементов управления ActiveX и форм ActiveForm в Web

Созданный элемент управления ActiveX или форму ActiveForm можно использовать на сервере Web. Для этого нужно настроить параметры компилятора, влияющие на распространение в Web, и откомпилировать проект. Ниже приведены основные этапы этого процесса.

Выберите команду Project/Web Deployment Options.

В поле Target Dir укажите каталог на сервере Web, в который нужно установить элемент управления ActiveX или форму ActiveForm (файл с расширением ОСХ). Здесь можно использовать стандартный путь или путь UNC, например \\SERVERMACHINE\OCXFILES\или S: \OCXFILES\.

В поле Target URL укажите адрес, по которому должен обратиться броузер клиента, чтобы получить доступ к элементу управления ActiveX или форме ActiveForm. Здесь нужно использовать корректный адрес URL, который указывает на сервер Web, например http: //ServerMachine/. В проект не следует включать имя самого файла ОСХ.

В поле HTML Dir нужно указать каталог, в котором Delphi создаст тестовый HTML-документ со ссылкой на создаваемый элемент ActiveX. Здесь можно использовать стандартный путь или путь универсального сетевого соединения UNC. Обычно в этом поле указывают тот же путь, что и в поле Target Dir, если только файлы ОСХ не хранятся отдельно от HTML-документов, которые используют эти элементы. Если вы не подключены к Web-серверу, можете создать тестовый каталог на собственном компьютере и использовать адрес URL, подобный nie:///c: \TestRoot\.

Щелкните на кнопке ОК.

Выполните команду Project/Build All. Это создаст библиотеку ActiveX (файл с расширением ОСХ), которая содержит элемент управления ActiveX или форму ActiveForm.

Выполните команду Project/Web Deploy. Созданная библиотека ActiveX будет скопирована в каталог Target Dir, который указан в п. 2. В каталоге HTML Dir, указанном в п. 4, будет создан HTML-документ, имя которого совпадает с именем проекта библиотеки ActiveX. Расширение HTML-документа — НТМ. Этот файл содержит ссылку на элемент ОСХ, путь к которому указан в п. 3.

Вызовите броузер Web для просмотра тестового HTML-документа.

Когда тестовая страница просматривается в броузере, форма ActiveForm появляется на экране и выполняется в броузере как встроенное приложение.

Использование модулей выполнения

Наиболее важный момент в этом процессе — распространение модулей выполнения (runtime packages). Если элемент управления ActiveX или форма ActiveForm использует модули, то следует включить опцию Deploy Required Packages.

Использование сжатия CAB

Пользователю предоставляется возможность использовать опцию Use CAB file compression, которая позволяет сжать элемент управления ActiveX или форму ActiveForm и любые дополнительные файлы, такие как файлы DPL или файлы лицензий. Эта возможность поддерживается только при использовании броузера Internet Explorer 3.01. На сегодняшний день броузер Netscape Navigator не поддерживает САВ-файлы. По умолчанию библиотека ActiveX, модули (если такие есть) и дополнительные файлы упаковываются в три САВ-файла. Возможна также упаковка всех файлов в один САВ-файл, но делать это не рекомендуется. Разделяя файлы по различным архивам CAB, вы можете избежать загрузки излишних файлов, которые уже установлены на компьютере пользователя.

Использование подписей кода

Если вы хотите подписать проект элемента управления ActiveX или формы ActiveForm, то сначала включите опцию Code sign project, а после этого во вкладке Code Signing диалогового окна Web Deployment Options введите следующий текст.

Have obtained a Software Publishing Certification file (.SPC)

Private Key (.PVK)

Что такое подпись кода? Это технология, встроенная в Microsoft Internet Explorer, известная как Authenti-code™. Она позволяет приложению Internet Explorer вместо стандартного предупреждения об использовании неизвестного приложения отображать сообщение о сертификате подлинности программного обеспечения в момент загрузки выполняемого кода, например программ установки через Internet, элементов управления ActiveX или форм ActiveForm. Подпись кода — это цифровой идентификатор (Digital ID) в компании VeriSign (www.verisign.com) с целью получения сертификата на публикацию программного обеспечения Software Publishing Certificate и частного ключа Private Key, используемого для подписи всех распространяемых компанией выполняемых файлов. С помощью подписи кода разработчик может обеспечить пользователей информацией и страховкой при загрузке программного обеспечения из Internet.

Никаких требований, заставляющих разработчиков подписывать выполняемый код, не существует, но эта процедура предоставляет способ повышения надежности загрузки программного обеспечения из Internet. Более подробную информацию о получении цифрового идентификатора VeriSign Software Publisher Digital ID можно получить на Web-узле компании VeriSign по адресу http://www.verisign.com. Внимание! Пожалуйста, запомните, что регистрация программного обеспечения производится для выбранного компьютера. Это значит, что регистрироваться для получения идентификатора Digital ID, получать идентификатор Digital ID и использовать этот идентификатор нужно на одном компьютере и в одной версии Internet Explorer. Если службу Authenticode планируется использовать более чем на одном компьютере, то нужно получить более чем один идентификатор Digital ID. Если установлена новая версия Internet Explorer, то нужно выполнить повторную регистрацию.