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

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

На первом этапе выводим текст. Пусть на данном этапе необходимо вывести следующее.

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

В обработчике нажатия первой кнопки начнем формировать код программы.

Создаем Объект Word.Application.

Variant v;

if(!fStart)

{

try

{

vVarApp=CreateOleObject("Word.Application");

fStart=true;

}

catch(...)

{

MessageBox(0, "Ошибка при открытии сервера Word",

"Ошибка", MB_OK);

return;

}

}

О использовании try catch мы также уже говорили в Ч 1. п 1.3.

Сделаем приложение видимым.

vVarApp.OlePropertySet("Visible",true);

Переменной vVarDocs присваивается значение Documents - свойство объекта Word.Application, содержащее набор рабочих документов.

vVarDocs=vVarApp.OlePropertyGet("Documents");

Добавляем созданный документ в приложение - для этого надо выполнить вызов, прототип которого:

vVarDocs.OleProcedure("Add","Template", NewTemplate, DocumentType);

Пре NewTemplate true создается шаблон при false - документ.

Правильно для конретной версии Word создание документа записать как:

vVarDocs.OleProcedure("Add",

"C:\\WINDOWS\\Application Data\\Microsoft\\Шаблоны\\Normal.dot",

false,0);

Посколько расположение шаблонов хранится для всех установленных типов документов в реестре, то для создания простого документа можно использовать установки по умолчанию и достаточно записать:

vVarDocs.OleProcedure("Add");

Этот вызов можно повторить столько раз сколько будет создано рабочих документов. Следует обратить внимание, что обратиться к документу после его создания можно по свойству Item следующим образом:

vVarDoc=vVarDocs.OleFunction("Item",n);

Здесь n=1 соответствует последнему созданному документу, n-1 предпоследнему, и. т.д.

Создаем, например 2 документа:

vVarDocs.OleProcedure("Add");

vVarDocs.OleProcedure("Add");

Проверяем, что создано два документа:

if(vVarDocs.OlePropertyGet("Count") != 2)

{

MessageBox(0, "Ошибка при создании документов",

"Ошибка", MB_OK);

return;

}

Будем работать с первым документом, как ни странно его Item = 2:

vVarDoc=vVarDocs.OleFunction("Item",2);

Смотреть будем тоже на первый документ - т.е. активируем его:

vVarDoc.OleProcedure("Activate");

Получаем свойство Paragraphs объекта документ:

vVarParagraphs=vVarDoc.OlePropertyGet("Paragraphs");

Задаем текст для вывода:

str="\t\tОзнакомлен\t\t";

Добавляем параграф:

vVarParagraphs.OleProcedure("Add");

Работаем с первым параграфом:

vVarParagraph=vVarParagraphs.OleFunction("Item",1);

Заносим в него текст:

vVarParagraph.OlePropertyGet("Range").

OlePropertySet("Text",str.c_str());

Выравниваем по правому краю (wdAlignParagraphRight - по правому краю), по причинам описанным выше используем константы вместо имен переменных:

vVarParagraph.OlePropertySet("Alignment",2);

Аналогично выводим следующие параграфы, в том числе и пустые:

str="Директор\t\t=Пупкин=";

vVarParagraphs.OleProcedure("Add");

vVarParagraph=vVarParagraphs.OleFunction("Item",2);

vVarParagraph.OlePropertyGet("Range").

OlePropertySet("Text",str.c_str());

vVarParagraph.OlePropertySet("Alignment",2);

vVarParagraphs.OleProcedure("Add");

str="\"....\"...........................2003г.";

vVarParagraphs.OleProcedure("Add");

vVarParagraph=vVarParagraphs.OleFunction("Item",4);

vVarParagraph.OlePropertyGet("Range").

OlePropertySet("Text",str.c_str());

vVarParagraph.OlePropertySet("Alignment",2);

vVarParagraphs.OleProcedure("Add");

str="Итоги работы за неделю.";

vVarParagraphs.OleProcedure("Add");

vVarParagraph=vVarParagraphs.OleFunction("Item",6);

vVarParagraph.OlePropertyGet("Range").

OlePropertySet("Text",str.c_str());

vVarParagraph.OlePropertySet("Alignment",1);

Константы выравнивания текста:

  • wdAlignParagraphLeft = 0;

  • wdAlignParagraphCenter = 1;

  • wdAlignParagraphRight = 2;

  • wdAlignParagraphJustify = 3;

  • wdAlignParagraphDistribute = 4;

  • wdAlignParagraphJustifyMed = 5;

  • wdAlignParagraphJustifyHi = 7;

  • wdAlignParagraphJustifyLow = 8.

Результат с достоинствами и недостатками видим на рисунке. Видно, что фон белый, шрифт не такой как хотельсь бы, включена линейка, проверка орфографии и т.п.