Создание объекта автоматизации
После щелчка на кнопке ОК в окне диалога New Items производится запуск мастера создания объекта автоматизации, в окне которого необходимо задать параметры создаваемого объекта (рис. 18.7).
Рис. 18.7. Окно мастера создания объекта автоматизации |
? В поле CoClass Name вводится имя класса объекта автоматизации (в нашем примере назовем класс TestAuto).
? В списке Instancing, как и в случае COM-сервера, выбирается способ создания объекта автоматизации.
? В списке Threading Model, как и в случае COM-сервера, выбирается вариант работы сервера с потоками.
? Флажок Generate event support code определяет, должен ли создаваемый объект автоматизации поддерживать обработки событий.
После щелчка на кнопке ОК в окне Automation Object Wizard будет создан новый объект автоматизации и откроется окно редактора библиотеки типов. Если просмотреть текст модуля объекта автоматизации (в нашем примере назовем его AutoObjectUnit), то даже при беглом взгляде видно, что содержащийся в нем код не сложнее, чем в модуле «пустого» СОМ-объекта: unit AutoObjectUnit;
interface
uses
ComObj, ActiveX. AutoServer_TLB. StdVcl; type
TTestAuto = class(TAutoObject. ITestAuto) protected
{ Protected declarations } end:
implementation uses ComServ: initialization
TAutoObjectFactory.Create(ComServer. TTestAuto.
Class_TestAuto,ciMulti Instance, tmApartment): end.
ПРИМЕЧАНИЕ-------------------------------------------------------------------------------
В данном примере при создании объекта автоматизации не была включена поддержка обработки событий. Программирование событий в некоторой степени усложняет код модуля объекта автоматизации и представляет собой нетривиальную задачу, однако ввиду ограниченного объема книги данные вопросы здесь не рассматриваются.
Код библиотеки типов вновь созданного объекта автоматизации, в отличие от СОМ-объекта, включает описание нескольких интерфейсов:
unit AutoServer_TLB;
{STYPEDADDRESS OFF}
uses Windows, ActiveX. Classes. Graphics, OleServer,
OleCtrls. StdVCL;
const
AutoServerMajorVersion = 1;
AutoServerMinorVersion = 0;
LIBID_AutoServer: TGUID - '{62D7BF80-A76C-11D4-A8C1- 0060520799ВЕ} ’;
IIDJTestAuto: TGUID = ' {62D7BF81-A76C-11D4-A8C1- 0060520799BE}';
CLASS_TestAuto: TGUID = 1{62D7BF85-A76C-11D4-A8C1- 0060520799BE}':
type
ITestAuto = interface;
ITestAutoDisp = dispinterface:
TestAuto - ITestAuto;
ITestAuto = interface!IDispatch)
['{62D7BF81-A76C-11D4-A8C1-0060520799BE}'] end;
ITestAutoDisp = dispinterface
['{62D7BF81-A76C-11D4-A8C1-0060520799BE}' ]
end:
CoTestAuto = dass
class function Create: ITestAuto;
dass function CreateRemote!const MachineName;
String): ITestAuto; end;
implementation uses ComObj;
dass function CoTestAuto.Create: ITestAuto; begin
Result := CreateComObject(CLASS_TestAuto) as ITestAuto: end;
class function CoTestAuto'.CreateRemote!const MachineName: string): ITestAuto; begin
Result := CreateRemoteComObject(MachineName.
CLASSJestAuto) as ITestAuto: end:
end.
Интерфейс ITestAuto называется дуальным и предназначен для работы с объектом TTestAuto.
ПРИМЕЧАНИЕ------------------------------------------------------------------------------
Дуальные интерфейсы являются наследниками интерфейса IDispatch и обеспечивают как связывание с объектом во время компиляции (раннее связывание через таблицу виртуальных методов), так и позднее связывание, используемое в технологии автоматизации.
Интерфейс диспетчеризации ITestAutoDisp обеспечивает взаимодействие с объектом на основе технологии автоматизации.
Еще по теме Создание объекта автоматизации:
- Статья 1112. Договор о создании по заказу и использование объекта права интеллектуальной собственности
- АВТОМАТИЗАЦИЯ
- Статья 298. Незаконное проведение поисковых работ на объекте археологического наследия, уничтожение, разрушение или повреждение объектов культурного наследия
- 14.8.2. Традиция создания инструментов
- §10. СОЗДАНИЕ ЮРИДИЧЕСКОГО ЛИЦА
- Статья 87. Создание юридического лица
- 2. Создание и управление учреждением
- 14.8.1. Принцип создания инструментов
- Статья 153. Создание акционерного общества
- 2. Создание и управление фондом
- Создание концепции
- Статья 255. Создание преступной организации
- 5.10.1. Создание пространства для ответа
- Глава 1. Ты – непростое создание
- 5.10.2. Создание отправных пунктов
- 1. Возникновение (создание) юридического лица
- Создание ума-эго
- Процесс создания коллектива
- Создание желаемого Любовью