Чтобы использовать эту возможность, 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 функцию 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, после чего нужно только перекомпилировать модуль, так как он уже установлен.