Dev/Docu/ru/ComInterfaceGen.odc

DevComInterfaceGen

DEFINITION DevComInterfaceGen;

	IMPORT Dialog;

	VAR
		dialog: RECORD 
			library: Dialog.List;
			fileName: ARRAY 256 OF CHAR;
			modName: ARRAY 64 OF CHAR
		END;

	PROCEDURE Browse;
	PROCEDURE GenAutomationInterface;
	PROCEDURE InitDialog;
	PROCEDURE ListBoxNotifier (op, from, to: INTEGER);
	PROCEDURE TextFieldNotifier (op, from, to: INTEGER);
	... plus some private items ...	

END DevComInterfaceGen.


Модуль DevComInterfaceGen предоставляет службы для автоматического создания модулей для COM-интерфейсов. Модули интерфейсов используются BlackBox для доступа к компонентам COM несколькими различными способами.

Один из них - это Автоматизация (Automation). Некоторое приложение (сервер), поддерживающее Автоматизацию, может управляться из другого приложения (диспетчер). Интерфейс приложения-сервера, то есть, объекты, предоставляемые приложением, и операции на этих объектах, описываются в библиотеке типов COM. Для написания диспетчера на BlackBox используется модуль интерфейса, который содержат объект Компонентного Паскаля для каждого объекта COM из библиотеки типов. Эти объекты могут быть доступны таким образом, как и другие объекты Компонентного Паскаля, с удобством и безопасностью типов. Они скрывают детали стандарта Автоматизации. Подсистема Ctl включает в себя такие модули интерфейсов Автоматизации. (В основном для серверов автоматизации MS Office.)

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

1. Имена формального параметра совпадают с именем типа параметра. Решение: Измените имя формального параметра в списке параметров и теле процедуры.

2. Имя формального параметра совпадает с именем возвращаемого типа. Решение: Измените имя формального параметра в списке параметров и теле процедуры.

3. Имя константы совпадает с именем некоторого типа. Решение: Измените имя константы.


Возможное меню, использующее команды из этого модуля:

MENU "Automation"
	"Generate Automation Interface"	""	"DevComInterfaceGen.InitDialog; StdCmds.OpenToolDialog('Dev/Rsrc/ComInterfaceGen', 'Generate Automation Interface')"	""
END


VAR dialog: RECORD
Интерактор для диалога Generate Automation Interface.

library: Dialog.List
Список, представляющий все библиотеки типов, которые зарегистрированы в системной регистрационной базе данных.

fileName: ARRAY 256 OF CHAR
Полное имя пути для библиотеки типов.

modName: ARRAY 64 OF CHAR
Имя модуля интерфейса Автоматизации, который будет создан из соответствующей библиотеки типов.


PROCEDURE Browse
Открывает стандартный диалог открытия файла, позволяющий пользователю выбрать библиотеку типов или файл DLL.

PROCEDURE GenAutomationInterface
Создает модуль интерфейса, соответствующий параметрам в dialog.

PROCEDURE InitDialog
Вызывайте эту команду перед открытием диалога Genetate Automation Interface. Она инициализирует интерактор dialog.

PROCEDURE ListBoxNotifier (op, from, to: INTEGER)
PROCEDURE TextFieldNotifier (op, from, to: INTEGER)
Обработчики, которые используются диалогом Generate Automation Dialog.