
- •Часть 2. Работа с ole-сервером Word.
- •2.1 Получение доступа к интерфейсу Application для Word.
- •2.2 Интерфейсы и константы
- •2.3 Создание рабочего документа
- •2.3.1 Вывод текстовой информации.
- •2.3.2 Изменение параметров документа.
- •2.4 Работа с таблицами.
- •2.5 Текст кода программы.
- •2.6 Работа с диаграммами.
- •2.6.1 Копирование диаграммы из рабочей книги Excel.
- •2.7 Некоторые другие возможности.
Часть 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();
}
Вторяя кнопка таким образом служит для выхода из программы и закрытия сервера.