
- •Часть 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.5 Текст кода программы.
Файл Unit1.h:
#ifndef Unit1H
#define Unit1H
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//-----------------------------------------------
class TForm1 : public TForm
{
__published:
TButton *Button1;
TButton *Button3;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
private:
Variant vVarApp,vVarDocs,vVarDoc,vVarParagraphs,
vVarParagraph,vVarRange,vVarTables,vVarTable,
vVarCell;
bool fStart;
AnsiString str;
public:
__fastcall TForm1(TComponent* Owner);
};
//-----------------------------------------------
extern PACKAGE TForm1 *Form1;
//-----------------------------------------------
#endif
Файл Unit1.cpp
#include
#pragma hdrstop
#include
#include
#include "Unit1.h"
#pragma package(smart_init)
//#include
#pragma resource "*.dfm"
#pragma hdrstop
TForm1 *Form1;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant v,v1;
if(!fStart)
{
try
{
//Создаем объект Word.Application
vVarApp=CreateOleObject("Word.Application");
fStart=true;
}
catch(...)
{
MessageBox(0, "Ошибка при открытии сервера Word",
"Ошибка", MB_OK);
return;
}
}
//Делаем сервер видимым
vVarApp.OlePropertySet("Visible",true);
//Получаем свойство Documents объекта
vVarDocs=vVarApp.OlePropertyGet("Documents");
//Создаем два документа
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");
//vVarDoc.OleProcedure("Select");
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());
//Выравниваем по правому краю
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());
//wdAlignParagraphCenter
vVarParagraph.OlePropertySet("Alignment",1);
//Фон Документа
vVarDoc.OlePropertyGet("Background").
OlePropertyGet("Fill").
OlePropertyGet("ForeColor").
OlePropertySet("RGB",RGB(255, 255, 153));
vVarDoc.OlePropertyGet("Background").
OlePropertyGet("Fill").
OlePropertySet("Visible",-1);
vVarDoc.OlePropertyGet("Background").
OlePropertyGet("Fill").
OleFunction("Solid");
//Убираем линейку
vVarApp.OlePropertyGet("ActiveWindow").
OlePropertyGet("ActivePane").
OlePropertySet("DisplayRulers",false);
//Размер окна
vVarApp.OlePropertySet("WindowState",1);
//Панели Инструментов
vVarApp.OlePropertyGet("CommandBars","Standard").
OlePropertySet("Visible",false);
//Разметка страницы
vVarApp.OlePropertyGet("ActiveWindow").
OlePropertyGet("ActivePane").
OlePropertyGet("View").
OlePropertySet("Type",6);
//Масштаб отлбражения документа
vVarApp.OlePropertyGet("ActiveWindow").
OlePropertyGet("ActivePane").
OlePropertyGet("View").
OlePropertyGet("Zoom").
OlePropertySet("Percentage",100);
//Проверка грамматики
vVarApp.OlePropertyGet("Options").
OlePropertySet("CheckGrammarAsYouType",false);
vVarApp.OlePropertyGet("Options").
OlePropertySet("CheckGrammarWithSpelling",false);
//Шрифт устанавливаем для строки параграфа
vVarParagraph=vVarParagraphs.OleFunction("Item",6);
v=vVarParagraph.OlePropertyGet("Range").
OlePropertyGet("Font");
//Цвет шрифта
v.OlePropertySet("Color",255);
//Размер шрифта
v.OlePropertySet("Size",18);
//Имя шрифта
v.OlePropertySet("Name","Times New Roman");
//Стиль шрифта
v.OlePropertySet("Bold",true);
v.OlePropertySet("Italic",true);
//Подчеркивание
v.OlePropertySet("Underline",1);
//Цвет подчеркивания
v.OlePropertySet("UnderlineColor",16711680);
//Зачеркивание
v.OlePropertySet("StrikeThrough",false);
v.OlePropertySet("DoubleStrikeThrough",false);
//Двойные линии обводки шрифта
v.OlePropertySet("Outline",false);
//Приподнятый
v.OlePropertySet("Emboss",false);
//Шрифт с тенями
v.OlePropertySet("Shadow",true);
//Скрытый
v.OlePropertySet("Hidden",false);
//Все буквы в нижнем регистре
v.OlePropertySet("SmallCaps",false);
//Все буквы в верхнем регистре
v.OlePropertySet("AllCaps",false);
//Гравированный шрифт утопленный
v.OlePropertySet("Engrave",false);
//В верхнем индексе
v.OlePropertySet("Superscript",false);
//В нижнем индексе
v.OlePropertySet("Subscript",false);
//Расстояние между буквами
v.OlePropertySet("Spacing",0);
//Масштаб
v.OlePropertySet("Scaling",100);
//Смещенный вверх или вниз в пикселях
v.OlePropertySet("Position",0);
//Кернинг - слияние в пунктах
v.OlePropertySet("Kerning",1);
//Анимация
v.OlePropertySet("Animation",0);
//Запоминаем где курсор - свойство Selection
v=vVarApp.OlePropertyGet("Selection");
//Сдвинем курсор на 5 параграфов вниз
v.OleProcedure("MoveDown",4,5);
//Встанем на начало строки
v.OleProcedure("HomeKey",5);
//Сдвигаемся на 13 символов вправо
v.OleProcedure("MoveRight",1,13);
//Выделяем "за неделю"
v.OleProcedure("MoveRight",1,10,1);
//зменим цвет выделенного текста
v.OlePropertyGet("Font").
OlePropertySet("Color",8388608);
///////////////////////Cоздание таблицы//////////
//Добавляем два параграфа
vVarParagraphs.OleProcedure("Add");
vVarParagraphs.OleProcedure("Add");
//Выбираем ряд в параграфе
vVarParagraph=vVarParagraphs.OleFunction("Item",8);
vVarParagraph.OlePropertySet("Alignment",1);
vVarRange = vVarParagraph.OlePropertyGet("Range");
//Добавляем таблицу
vVarDoc.OlePropertyGet("Tables").
OleProcedure("Add", vVarRange, 3, 9,1,1);
//Работать будем с первой таблицей
vVarTable=vVarDoc.OlePropertyGet("Tables").
OleFunction("Item",1);
//Выравниваем таблицу по центру
vVarTable.OlePropertyGet("Rows").
OlePropertySet("Alignment",1);
//Установка ширины таблицы
vVarTable.OleFunction("AutoFitBehavior",2);
//Сетка в таблице
vVarApp.OlePropertyGet("ActiveWindow").
OlePropertyGet("View").
OlePropertySet("TableGridlines",true);
//Стиль таблицы
vVarTable.OleFunction("AutoFormat",25);
//Занесение информации в ячейки
for(int i=2;i <= 8;i++)
{
vVarCell=vVarTable.OleFunction("Cell",1,i);
vVarCell.OleFunction("Select");
v = vVarApp.OlePropertyGet("Selection").
OlePropertyGet("Font");
v.OlePropertySet("Size",16);
v.OlePropertySet("Underline",0);
v.OlePropertySet("Color",clYellow);
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text",i-1);
}
random(50);
int j,k=0;
for(int i=2;i <= 9;i++)
{
vVarCell=vVarTable.OleFunction("Cell",2,i);
vVarCell.OleFunction("Select");
v = vVarApp.OlePropertyGet("Selection").OlePropertyGet("Font");
v.OlePropertySet("Size",14);
v.OlePropertySet("Underline",0);
j=random(50);
if(i != 9)
{
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text",j);
k=k+j;
}
else
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text",k);
}
k=0;
for(int i=2;i <= 9;i++)
{
vVarCell=vVarTable.OleFunction("Cell",3,i);
vVarCell.OleFunction("Select");
v = vVarApp.OlePropertyGet("Selection").
OlePropertyGet("Font");
v.OlePropertySet("Size",14);
v.OlePropertySet("Underline",0);
j=random(30);
if(i != 9)
{
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text",j);
k=k+j;
}
else
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text",k);
}
vVarCell=vVarTable.OleFunction("Cell",1,9);
vVarCell.OleFunction("Select");
v = vVarApp.OlePropertyGet("Selection").
OlePropertyGet("Font");
v.OlePropertySet("Size",16);
v.OlePropertySet("Underline",0);
v.OlePropertySet("Color",clRed);
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text","Итог");
for(int i=1;i <= 3;i++)
{
vVarCell=vVarTable.OleFunction("Cell",i,1);
vVarCell.OleFunction("Select");
v = vVarApp.OlePropertyGet("Selection").
OlePropertyGet("Font");
v.OlePropertySet("Size",16);
v.OlePropertySet("Underline",0);
v.OlePropertySet("Color",clBlue);
v1=vVarApp.OlePropertyGet("Selection").
OlePropertyGet("ParagraphFormat");
v1.OlePropertySet("Alignment", 0);
switch(i)
{
case 1:
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text","Товар\\Дни недели");
break;
case 2:
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text","Компьютеры:");
break;
default:
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text","Принтеры:");
}
}
AnsiString vAsCurDir=GetCurrentDir();
AnsiString vAsCurDir1=vAsCurDir+"\\test.doc";
vVarDoc=vVarDocs.OleFunction("Item",2);
vVarDoc.OleProcedure("SaveAs",vAsCurDir1.c_str());
}
//---------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(fStart) vVarApp.OleProcedure("Quit");
Close();
}
//---------------------------------------