Листинг 9.1.
Запуск Microsoft Word
procedure TFormStartWord.ButtonStartClick(Sender: TObject);
var
//Переменная, интерфейс к объекту
Wordvar : OleVariant;
file_Name : string;
begin
//Начало блока перехвата исключения
try
file_Name := ExtractFilePath(Application.EXEName) +
\'worddoc.DOC\
//Инициализируем объект интерфейса
//для доступа к серверу COM Microsoft Word
Wordvar := CreateOleObject(\'Word.Application\');
//Добавление документа
wordvar.application.documents.add;
wordvar.application.activedocument.range.insertAfter(now);
//Сохранение документа (аналог действиям: «Сохранить как…»,
//с указанием имени файла)
wordvar.application.activedocument.saveas(fileName);
//Завершение работы с приложением и выгрузка COM-сервера
wordvar.application.quit(true,0);
…
end;
Предложенный исходный текст демонстрирует подключение к серверу без помощи компонента среды разработки. Для корректной работы необходимо в раздел uses включить COMOBJ – модуль работы с объектом СОМ. Важно отметить, что наличие функций, вызываемых для объекта wordvar, определяется в период выполнения. Это значит, что ошибка может обнаружиться только в период выполнения программы, поэтому весь код работы с объектом помещен в блок try.
Класс TOLEServer
На вкладке Servers находится набор компонентов для доступа к серверам автоматизации. Не все компоненты возвращают ссылку на объект Application, то есть могут быть получены интерфейсы для доступа к таким вложенным объектам, как документ Microsoft Word или рабочая книга Microsoft Excel. Все компоненты унаследованы от класса TOLEServer, который наследует свойства класса Tcomponent. TOLEServer является базовым классом всех СОМ-серверов. Кроме этого, данный класс имеет еще несколько свойств и методов для управления связью с СОМ-сервером. Среди таковых уже знакомое нам свойство AutoConnect, которое автоматически запускает СОМ-сервер и извлекает из него интерфейс, обеспечивающий связь с контроллером. Еще одно важное свойство класса TOLEServer – это ConnectKind, указывающее тип процесса, с которым устанавливается связь. Свойство используется методом Connect, который вызывается автоматически, если свойство AutoConnect истинно. В табл. 9.1 описаны значения, которые может принимать ConnectKind.
Таблица 9.1. Значение свойства ConnectKind
Более подробно следует рассмотреть значение свойства ConnectKind, равное ckAttachToInterface. Соединение с сервером производится посредством использования главного интерфейса Application, но, например, возникает необходимость подключить к нашему проекту такие компоненты как WordDocument или WordParagraphFormat. В этом случае мы просто подключаемся к уже существующему интерфейсу, а не создаем его заново. Также это может быть необходимо, когда контроллер должен отслеживать события, происходящие в СОМ-сервере.