 |
Статьи
|
 |
Телефон Вирта, недорогие копии часов |
| Создание таблицы в Word с помощью C++Builder |
Создание в Word листа, по типу конверта:
Variant World = CreateOleObject("Word.Application");
World.OlePropertyGet("Documents").OleFunction("Add");
World.OlePropertySet("Visible", true);
Variant Dialog = World.OlePropertyGet("Dialogs").OleFunction("Item", 173);
String remindex="111",remstreet="222";
Dialog.OlePropertySet("AddrText", OleVariant(remindex+'\n'+remstreet));
Dialog.OleProcedure("Show");
В общем, как работать с Word при помощи OLE-интерфейсов?
К Word’у, как и к другим OLE-ориентированным приложениям, в основном, прилагаются VBA справки, в которых изложена иерархия объектов Word,
их методы и свойства, с помощью которых и осуществляется управление распределёнными приложениями.
Давайте рассмотрим на каком-нибудь простом примере, как сформировать в Worde, скажем, таблицу.
Для начала откроем Word, и включим запись макроса. (Сервис–>макрос->начать запись)
НИЧЕГО ЛИШНЕГО НЕ РИСУЕМ И НИГДЕ НЕ КЛАЦАЕМ!!!
И рисуем только таблицу. Затем останавливаем запись макроса (Сервис–>макрос->остановить запись). Далее входим в режим VBA (ALT+F11), и смотрим записанный макрос. Что у нас примерно должно получится:
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
With Selection.Tables(1)
If .Style <> "Сетка таблицы" Then
.Style = "Сетка таблицы"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
End With
Здесь мы видим иерархию объектов ActiveDocument - Tables иерархию любых объектов в Word и их свойства можно увидеть во встроенной справке VBA, которая находится примерно в Microsoft Word VB Reference -> Objects, где в алфавитном порядке будут находиться описания всех Word объектов.
В общем, тот, кто хочет научиться управлять Word’ом (или любым другим офисным приложением(или не офисным), поддерживающим работу через OLE) с помощью интерфейсов, должен сначала научиться пользоваться справкой VBA(или ежели справки нет – знать основные интерфейсы и их методы), соответствующей данному приложению.
Итак, пробуем создать это приложение.
Для начала подключим необходимые библиотеки:
#include sysvari.h
#include ComObj.hpp
Эти библиотеки необходимы для работы с OLE.
Далее создаём главный интерфейс:
Variant Word = CreateOleObject("Word.Application");
Как видите - здесь присутствует переменная Word типа Variant.
Переменная типа Variant – это переменная, которая может быть различных типов и тип её может изменяться динамически.
Чтобы это понять рассмотрим простоё пример:
int i =7;
AnsiString S = "Prewed !!!";
app = i;
ShowMessage(app);
app=S;
ShowMessage(app);
//Сам тип вариант мы подробно рассматривать не будем. Кому интересно пусть читают книжки по С++ Builder.
Как видно из примера, когда к переменной app присвоили значение i , она, как и ожидалось приняла значение int, а после второго присваивания тип AnsiString.
В нашем же примере ей присвоен тип ОЛЕ Объекта.
Далее – вводим переменную типа Variant, которая будет объектом типа Table. Итак, добираемся до объекта типа Table:
Variant Table = Word.OlePropertyGet("Documents").OlePropertyGet("Tables");
Функция OlePropertyGet предназначена для возвращения значений из ОЛЕ-приложений (объектов, параметров….).
В этой строке переменная Table присваивается к объекту типа "Tables". Далее у нас описана функция добавления таблицы:
Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
Откроем функцию Add элемента «Tables» в справке VB.
Мы видим:
expression.Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)
Примерный перевод:
Range - Требует объекта типа «Range». Диапазон, где Вы хотите, чтобы появилась таблица. Таблица заменяет диапазон, если диапазон не сокращен.
NumRows - Требует тип Long. Количество строк в таблице.
NumColumns - Требует тип Long. Количество столбцов в таблице.
DefaultTableBehavior - Устанавливает значение, которое определяет, изменяет ли Microsoft Word автоматически размеры ячеек в таблицах, чтобы соответствовать содержанию ячеек.
Может быть любой следующих констант: wdWord8TableBehavior (заблокированный) или wdWord9TableBehavior (допускаемый). Заданная по умолчанию константа - wdWord8TableBehavior.
AutoFitBehavior - Устанавливает правила для того, как Word устанавливает размеры таблиц. Может являться одной из следующих WdAutoFitBehavior констант:
wdAutoFitContent, wdAutoFitFixed, или wdAutoFitWindow. Если DefaultTableBehavior установлен в wdWord8TableBehavior, этот параметр игнорируется.
В C++Builder это будет так:
Variant Word = CreateOleObject("Word.Application");
Word.OlePropertySet("Visible", true);
//Делаем наш документ видимым.
Variant Doc = Word.OlePropertyGet("Documents").OleFunction("Add");
//Создаём пустой документ.
Variant Range =Word.OlePropertyGet("Selection").OlePropertyGet("Range");
//Диапазон, где будет находится наша таблица.
Variant Tables=Doc.OlePropertyGet("Tables").OleFunction("Add",Range,2,2,1,0);
//Собственно создание таблицы.
Word.OleProcedure("Quit");
//Диалог закрытия документа.
Значения констант wdWord9TableBehavior и wdAutoFitFixed я взял из Борландского файла "word_xp.h", который находится в каталоге C++Builder по адресу: "Borland\CBuilder6\Include\Vcl".
Откройте этот файл в блокноте и пользуйтесь поиском необходимой константы.
Параметры таблицы
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
Можно опустить. Здесь мы не будем изменять свойства таблицы. В этом примере мы только пытаемся её создать.
Версия для печати |
|
| Информация о статье: "Создание таблицы в Word с помощью C++Builder" | | Автор: | Koss | | Сайт: | http://devoid.com.ua | | Добавлена: | 02 сентября 2007 | | Просмотров: | 4391 |
|
|
|
Не нашли ответ на свой вопрос? Задайте вопрос своим коллегам и они Вам ответят!

|
|
 |
Популярные
|
 |
 |
Блог
|
 |
 |
Форум
|
 |
Низкие цены: сейфы Екатеринбург для вас. |