- •Разработка объекта автоматизации в среде delphi.
- •6.6 Методические указания.
- •6.6.1 Расширения com
- •6.6.2 Мастера для создания сом-объектов
- •6.6.3 Технология автоматизации
- •6.6.4. Интерфейс iDispatch
- •6.6.5. Интерфейсы диспетчеризации
- •6.6.6 Создание серверов автоматизации в Delphi
- •6.6.6.1 Создание внешнего сервера автоматизации.
- •6.6.6.2 Разработка клиента автоматизации
- •7.6.7 Использование ole-документов в приложениях
- •6.6.7.1 Основные сведения об ole-документах
- •6 .6.7.2 Компонент tOleContainer.
- •6.6.7.3 Применение компонента tOleContainer для работы с ole-документами.
- •6.6.7.3.1 Простейший пример использования компонента tOleContainer.
- •6.6.7.3.2 Основные способы использование компонента tOleContainer.
- •6.6.7.3.3 Управление объектом внутри ole-контейнера
6.6.2 Мастера для создания сом-объектов
Мастер СОМ-объектов выполняет следующие шаги:
1. Создает новый модуль в текущем проекте.
2. Определяет новый класс, который является прямым потомком класса TCOMObject и устанавливает конструктор фабрики класса.
В общем случае, для разработчика процесс создания нового СОМ-объекта состоит из следующих шагов:
1. Проектирование СОМ-объекта.
2. Создание СОМ-объекта с использованием мастера.
3. Регистрация СОМ-объекта.
4. Тестирование СОМ-объекта.
При проектировании СОМ-объекта вы должны четко представлять, какие СОМ-интерфейсы должны быть реализованы. Мастер по умолчанию предоставляет интерфейс lunknown. Кроме того, вы обязаны определить, какой тип сервера вы хотите использовать: внутренний, локальный или удаленный. Если вы проектируете внутренний или локальный СОМ-сервер - вы должны подключить библиотеку типов, при этом маршалинг будет произведен автоматически.
В Delphi имеются мастера для создания следующих объектов:
-
Таблица 6.1.
Расширения СОМ
Расширение СОМ
Краткое описание
Серверы автоматизации (Automation servers)
Серверы автоматизации - это объекты, которыми можно управлять из других приложений во время работы приложения. Таким образом, автоматизация - это способность приложения программно контролировать объекты других приложений
Диспетчеры автоматизации или СОМ-клиенты (Automation Controllers, COM Clients)
Диспетчеры автоматизации - это клиенты серверов автоматизации. Они позволяют разработчику или пользователю писать сценарии для управления серверами автоматизации
Элементы управления ActiveX (ActiveX Controls)
Элементы управления ActiveX предназначены для серверов внутри процесса (in-process COM servers). Элементы ActiveX обычно используются путем встраивания в приложение-клиент
Библиотеки типов (Type Libraries)
Библиотеки типов представляют собой статичные структуры данных, которые часто сохраняются как файлы ресурсов. Они содержат детализированную информацию об объекте и его интерфейсах. Клиенты серверов автоматизации и элементы управления ActiveX используют данную информацию и всегда считают ее доступной
Страницы активного сервера - ASP (Active Server Pages)
Активные серверные страницы - это компоненты ActiveX, которые позволяют вам создавать динамически изменяющиеся Web-страницы
Активные документы (Active Documents)
Активные документы - это объекты, которые поддерживают связывание и внедрение, визуальное редактирование, перенос (drag-and-drop). В качестве примера таких документов можно представить документы Microsoft Word и книги Microsoft Excel
Визуальные межпроцессные объекты (Visual Cross-process Objects)
Визуальные межпроцессные объекты - это визуальные объекты, которыми можно управлять из других процессов
Таблица 6.2 Особенности наиболее распространенных объектов COM |
||||
СОМ-объект |
Визуальность |
Процесс |
Связь |
Библиотека типов |
Активный документ (Active Document) |
Обычно визуальный |
Внутренний или локальный |
OLE |
Нет |
Автоматизация (Automation) |
Может быть как визуальным, так и невизуальным |
Внутренний, локальный или удаленный |
Автоматический маршалинг при помощи интерфейса IDispatch |
Требуется для автоматического маршалинга |
Элемент управления ActiveX (ActiveX Control) |
Обычно визуальный |
Внутренний |
Автоматический маршалинг при помощи интерфейса IDispatch |
Требуется |
Произвольный объект интерфейса |
По выбору |
Внутренний |
Не требуется маршалинг |
Рекомендуется |
Произвольный объект интерфейса |
По выбору |
Внутренний, локальный или удаленный |
Автоматический маршалинг в зависимости от библиотеки типов, в противном случае - ручной маршалинг |
Рекомендуется |
простого СОМ-объекта;
объекта автоматизации;
элемента управления ActiveX;
страниц активного сервера;
форм ActiveX;
библиотек ActiveX;
страниц свойств;
библиотек типов;
объектов Microsoft Transaction Server (MTS).
Мастер автоматизирует задачи, характерные для создания каждого из вышеперечисленных типов СОМ-объектов. Мастер обеспечивает необходимые интерфейсы для каждого типа объекта. Для простого СОМ-объекта мастер предоставляет один требуемый СОМ-интерфейс lunknown, который устанавливает указатель интерфейса в объекте. Для объекта автоматизации мастер создает два интерфейса: lunknown и IDispatch, последний из которых обеспечивает автоматический маршалинг. Для различных COM-объектов необходимы разные наборы интерфейсов. В табл. 6.3 приведен перечень интерфейсов, предоставляемых различными мастерами. Вы можете выбрать тот мастер, который реализует необходимые для вашего СОМ-объекта интерфейсы.
Дальнейший процесс работы с мастером описан в лабораторной работы 1-TPr (см. п. 5.6.4.2).
Delphi предоставляет возможность добавления и собственных СОМ-объектов. Для создания нового интерфейса вы должны создать потомок интерфейса IDispatch и определить в нем необходимые методы. Для изменения уже существующего интерфейса вам нужно создать его прямого потомка и модифицировать его по своему усмотрению. Таким образом, непосредственное изменение уже существующих интерфейсов для разработчика недоступно.
Таблица 6.3. Интерфейсы, предоставляемые различными мастерами |
||
Мастер |
Предоставляемые интерфейсы |
Действия, выполняемые мастером |
СОМ-сервер |
lUnknown |
Экспортирует необходимые программы, которые осуществляют регистрацию сервера, регистрацию класса, загрузку и выгрузку сервера и экземпляров объекта. Создает и управляет фабрикой класса для объектов, осуществленных в сервере. Указывает СОМ, какие потоковые модели используются для интерфейсов объекта. Обеспечивает библиотеку типов, если она требуется |
Сервер автоматизации |
lUnknown, IDispatch |
Выполняет все описанное для мастера СОМ-сервера, кроме того, обеспечивает интерфейс пользователя и автоматически обеспечивает библиотеку типов |
Элемент управления ActiveX |
lUnknown, IDispatch, IPersistStreamlnit, IOlelnPlaceActiveObject, IPersist Storage, IViewObject, IOleObject, IViewObject2, IOleControl, IPerPropertyBrowsing, IOlelnPlaceObject, IspecifyPropertyPages |
Выполняет все описанное для мастеров, расположенных выше в этой таблице, кроме того, обеспечивает свойства, события и методы для всех интерфейсов TActiveXControl. Позволяет разработчику модифицировать объект в окне редактора кода |
Активные формы |
lUnknown, IDispatch, IPersistStreamlnit, lOlelnPlaceActiveObject, IPersistStorage, IViewObject, IOleObject, IViewObject2, IOleControl, IPerPropertyBrowsing, IOlelnPlaceObject, IspecifyPropertyPages |
Выполняет все описанное для мастера элемента управления ActiveX, кроме того, позволяет разработчику редактировать приложение |
Объект активный сервер |
lUnknown, IDispatch |
Выполняет все описанное для мастера сервера автоматизации и генерирует страничку с расширением ASP, которая может быть загружена в обозреватель Web. Мастер позволяет разработчику модифицировать свойства и методы объекта при помощи редактора библиотеки типов |
Библиотека ActiveX |
Нет |
Создает новую DLL для ActiveX или СОМ-сервера и обеспечивает все необходимые функции |
Страница свойств |
lUnknown, IPropertyPage |
Создает новую страницу свойств, которую разработчик может редактировать в редакторе форм |
Библиотека типов |
Нет |
Создает новую библиотеку типов и ассоциирует ее с активным проектом |
MTS-объект |
lobjectControl |
Добавляет новый модуль в текущий проект, который содержит объявление MTS-объекта |
