Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с Word

5.8K
04 октября 2005 года
ivan1985
42 / / 29.06.2005
По идее после таблицы должна вставлятся надпись, но она вставляется в ячейку(2,1) таблицы. Почему так получается?

Variant vVarApp, vVarDocs, vVarDoc, vVarParagraphs, vVarParagraph, Selection, vVarRange, vVarTable, vVarCell;


vVarParagraphs.OleProcedure("Add");
vVarParagraph=vVarParagraphs.OleFunction("Item",9);
vVarRange=vVarParagraph.OlePropertyGet("Range");
vVarParagraph.OlePropertySet("Alignment",1);
vVarDoc.OlePropertyGet("Tables").
OleProcedure("Add", vVarRange, 8, 3,1,1);
vVarTable=vVarDoc.OlePropertyGet("Tables").
OleFunction("Item",1);
vVarTable.OlePropertyGet("Rows").
OlePropertySet("Alignment",1);
vVarTable.OleFunction("AutoFitBehavior",1);
vVarApp.OlePropertyGet("ActiveWindow").
OlePropertyGet("View").
OlePropertySet("TableGridlines",true);
//--

vVarCell=vVarTable.OleFunction("Cell",1,3);
vVarCell.OlePropertyGet("Range").
OlePropertySet("Text","Ôàêòè÷åñêàÿ");
vVarApp.OlePropertyGet("Selection").
OlePropertyGet("ParagraphFormat").
OlePropertySet("Alignment", 0);
//--
..... Заполнение остальных ячеек....
//--
vVarParagraphs.OleProcedure("Add");
vVarParagraphs.OleProcedure("Add");

vVarParagraph=vVarParagraphs.OleFunction("Item",11);
vVarParagraph.OlePropertyGet("Range").
//-- Вставка надписи после таблицы
OlePropertySet("Text",Label326->Caption.c_str());
vVarParagraph.OlePropertySet("Alignment",1);
//--
14K
08 октября 2005 года
DemWIS
3 / / 08.10.2005
int TWordEnvironment::InsertTable(const TTableList & data, const TTableSize & size)
{
if (!IsAppInitialized || !IsDocInitialized) return int(false);
Application->Selection->Collapse(OleVariant(wdCollapseEnd));
Document->Tables->Add(Application->Selection->Range,
size.Height, size.Width,
OleVariant(wdWord9TableBehavior),
OleVariant(wdAutoFitFixed));
for (int ARow = 0; ARow < size.Height; ARow++) {
for (int ACol = 0; ACol < size.Width; ACol++) {
Application->Selection->TypeText(StringToOleStr(data[ARow][ACol]));
if ((ARow == size.Height-1) && (ACol == size.Width-1))
Application->Selection->MoveDown(
OleVariant(wdLine), OleVariant(1));
else
Application->Selection->MoveRight(OleVariant(wdCell), EmptyParam);
}
}
Application->Selection->MoveDown(OleVariant(wdLine), OleVariant(1));
Application->Selection->Collapse(OleVariant(wdCollapseEnd));

return int(true);
}

Так выглядит мой код для вставки таблицы в документ Word. Реализовано с использованием Type Library, а не объектов автоматизации (как в твоём случае).
Обрати внимание на строчки
Application->Selection->MoveDown(OleVariant(wdLine), OleVariant(1));
Application->Selection->Collapse(OleVariant(wdCollapseEnd));
Первая перемещает указатель за последнюю строку таблицы, а вторая сворачивает Selection в конец. Вместо Selection можно использовать Range, так как они одного типа.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог