В этом разделе мы более подробно остановимся на рассмотрении практических примеров использования СОМ-сервера редактора Microsoft Word. Достаточно популярный редактор обладает обширным набором возможностей, которые можно использовать вручную (традиционное создание и редактирование документов) и с применением технологии СОМ. Основное удобство последнего метода заключается в автоматизации рутинной работы, например составления отчетов. Следующий пример поможет нам разобраться в принципах построения контроллеров автоматизации, которые ранее уже упоминались. Контроллер автоматизации с точки зрения СОМ представляет собой приложение, которое посредством вызова процедур сервера проводит различные манипуляции над документом. В Microsoft Word это может быть написание текста в установленном формате и т. д.
Рассмотрим пример приложения, которое будет создавать новый документ Microsoft Word, записывать в него некоторый текст, добавлять таблицу и сохранять полученный документ в файл. В целях наилучшего понимания принципов использования объектов СОМ первый пример не будет использовать компонент среды разработки. Итак, приступим к созданию приложения. Для начала создаем новый проект и помещаем на форму следующие кнопки:
• открытия приложения Microsoft Word;
• вывода текста;
• добавления таблицы;
• сохранения документа;
• завершения работы Microsoft Word.
Мы не будем использовать компоненты, поэтому добавляем в секцию uses модуль ComOb j. Для работы с СОМ-сервером редактора нам понадобится объект OLE. Добавляем переменную типа OleVariant:
var
//Объект OLE
Wrd: OleVariant;
Обработчик кнопки запуска редактора имеет следующий вид (листинг 9.2).
Листинг 9.2.
Запуск редактора Microsoft Word
procedure TFormWord.bnOpenWordClick(Sender: TObject);
begin
//Создаем объект
Wrd := CreateOleObject(\'Word.Application\');
//Делаем видимым приложение
Wrd.Visible := true;
//Добавляем новый документ
Wrd.Documents.Add;
end;
После инициализации объекта создаем новый документ, предварительно активизировав (отобразив на экране) приложение. После того как Microsoft Word запущен и в нем создан новый документ, можно записывать текст. Для этого определяем обработчик кнопки вывода текста (листинг 9.3).
Листинг 9.3.
Вывод текста в Microsoft Word
procedure TFormWord.bnSetTextClick(Sender: TObject);
begin
//Процедура записи текста
//Устанавливаем шрифт
Wrd.Selection.Font.Size := 20;
Wrd.Selection.Font.Bold := true;
//Пишем текст
Wrd.Selection.TypeText(\'Технология COM является одной из современных\');
Wrd.Selection.TypeText(\'технологий организации межпроцессного взаимодействия\'#13#10#13#10);
//Задаем новые параметры шрифта
Wrd.Selection.Font.Size := 12;
Wrd.Selection.Font.Bold := false;
Wrd.Selection.Font.Italic := true;
Wrd.Selection.TypeText(\'Подпись: \');
Wrd.Selection.Font.Bold := true;
Wrd.Selection.TypeText(\'Delphi\'#13#10#13#10);
end;
Особой сложности данный фрагмент вызывать не должен, так как настройка шрифта и вывод теста производятся посредством интуитивно понятных функций и заданием соответствующих свойств. Но надо пояснить, что набор символов # 13 # 10 эквивалентен переходу на новую строку.
Процедура добавления таблицы является достаточно простой и выглядит следующим образом (листинг 9.4).
Листинг 9.4.
Добавление таблицы
procedure TFormWord.bnAddTableClick(Sender: TObject);
begin
//Процедура добавления новой таблицы
Wrd.ActiveDocument.Tables.Add(Wrd.Selection.Range,3,3);
end;
Таблица содержит три столбца и столько же строк. Далее следует пояснить обработчик нажатия кнопки сохранения документа (листинг 9.5).