Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Автоматизация WORD.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
557.06 Кб
Скачать

Часть 2. Работа с ole-сервером Word.

2.1 Получение доступа к интерфейсу.

2.2 Интерфейсы и константы.

2.3 Создание рабочего документа.

2.3.1 Вывод текстовой информации.

2.3.2 Изменение параметров документа.

2.4 Работа с таблицами.

2.5 Текст кода программы.

2.6 Работа с диаграммами.

2.7 Другие возможности.

Аналогично как и в части 1 - поставим целью из приложения (контроллера автоматизации) создать документ изображенный на Рис 2.1. Он также типичен с точки зрения созданя прикладных программ, использующих для вывода информации Word и содержит три наиболее часто используемых составных элемента: текстовую информацию, таблицу и диаграмму.

Путь создания данного документа - это шаги, которые позволят освоить работу с OLE сервером Word.

Рис 2.1 Итоговый документ, сформированный контроллером.

2.1 Получение доступа к интерфейсу Application для Word.

  • 1. Включить в проект модули:

  • #include <ComObj.hpp>

  • #include <utilcls.h>

  • 2. Определить - лучше глобально (для наглядности и удобства) - переменные, отражающие иерархию объектов Word Приложение->Набор документов->документ->Набор парагрофов-> Параграф->Строки

  • Variant vVarApp,vVarDocs,vVarParagraphs,vVarParagraph;

  • ///////

  • 3. создать объект автоматизации:

  • vVarApp=CreateOleObject("Word.Application");

Также, по причине описанной ввыше (Ч 1. П 1.1), не будем ориентироваться на конкретную библиотеку *.olb Office (конструкцию типа Word.Application.8 или Excel.Application.9, как и имена констант использовать не будем).

С этого момента можно пользоваться свойствами и методами созданного ole сервера, а именно:

  • Установка свойства.

  • vVarApp.OlePropertySet("имя", значение);

  • Чтение значения свойства.

  • переменная = app.OlePropertyGet("имя");

  • Вызов метода:

  • vVarApp.OleProcedure("имя",список параметров метода);

2.2 Интерфейсы и константы

Список интерфейсов и констант получаем при просмотре библиотеки типов Microsoft Word Object Library, открыв например файл MSWord9.olb (или другой в зависимости от версии Microsoft Offise). О пользовании библиотекой см. Ч 1. P 1.2.

Аналогично будем пользоваться сохраненным файлом MSWord9.idl и использовать так называемый "хитрый метод".

Напомним его суть - перевод макроса из кода Visual Basic в С++ код. Использование его аналогично как и при разработке контроллера для управления сервером Excel:

  • 1. Запустить Word.

  • 2. Сервис/Maкрос/Начать запись

  • 3. Выполннить последовательность нужных действий.

  • 4. Остановить запись

  • 5. Вызвать Visual Basic (Alt+F11)

  • 6. Tools/Macros/Edit

  • 7. Перевести код из кода Visual Basic в С++.

2.3 Создание рабочего документа

Создаем новое приложение (File/New/Application) и сохраним его файлы в директории по умолчанию (Projects) c именами по умолчанию Unit1.cpp, Unit1.h, Unit1.dfm, Project1.cpp, Project1.bpr. Имена на данном этапе не цель, хотя не возбраняется создать новую директорию и дать приложению и файлам подходящие имена.

Переменные соответствующие используемым в программе объектам, а именно:

Variant vVarApp,vVarDocs,vVarParagraphs,vVarParagraph;

bool fStart;

определим сразу все и глобально или в файле Unit1.h (в разделе private:) или перед функциями в Unit1.cpp, хотя для данного этапа требуются пока не все переменные и можно определить нужные и локально.

Переменная fStart служит индикатором того, что сервер запущен.

Разместим на форме как и ранее три кнопки (из вкладки Standart компонент Button). Подписывать кнопки также не будем (сейчас это тоже не цель), но запомним, что по первой кнопке будем работать с таблицей, по второй с диаграммой, а по третьей закрывать сервер и приложение. Выполним два клика по Button1 и Button3, создаем таким образом обработчики события нажатия кнопки.

void __fastcall TForm1::Button1Click(TObject *Sender)

{

}

void __fastcall TForm1::Button3Click(TObject *Sender)

{

if(fStart) vVarApp.OleProcedure("Quit");

Close();

}

Вторяя кнопка таким образом служит для выхода из программы и закрытия сервера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]