Консультация онлайн # 161385

Раздел: Pascal / Delphi / Lazarus
Автор вопроса: Atamansha
Дата: 25.02.2009, 16:07 Консультация неактивна
Поступило ответов: 1
Добрый день!

У меня такая ситуация: я из Delphi вставляю таблицу в документ MS Word, а затем пытаюсь дописать текст перед ней, но текст вставляется не ПЕРЕД таблицей, а в ее 1 ячейку. А как передвинуть таблицу, я не знаю...
Код примерно такой:

WordApp := CreateOleObject('Word.Application');

WordApp.Visible := False;

NewDoc := WordApp.Documents.Add;

iCols := AGrid.ColCount;
iRows := AGrid.RowCount;

WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);

for iGridRows := 1 to iRows do
for jGridCols := 1 to iCols do
WordTable.Cell(iGridRows, jGridCols).Range.Text :=
AGrid.Cells[jGridCols - 1, iGridRows - 1];

NewRange := NewDoc.Range;
NewRange.InsertBefore('text1');
NewRange.InsertAfter('text2');

WordApp.ActiveDocument.SaveAs(AFileName);

Ответ # 1, Шичко Игорь (Посетитель)

Здравствуйте, Atamansha!
Во-первых надо создать место для вставки текста.
Т.е.
...
NewDoc := WordApp.Documents.Add;
WordApp.Selection.TypeParagraph;
WordApp.Selection.TypeParagraph;
{вставили 2 параграфа}
iCols := AGrid.ColCount;
...

А затем чтобы перейти из таблицы в текст перед ней обычно выделяется первая ячейка:
WordTable.Cell(1,1).Select;
и переходим на строку вверх:
WordApp.Selection.MoveUp(wdline, 1, wdMove);
или в начало документа:
WordApp.Selection.HomeKey(wdStory, wdMove);

Удачи.

Шичко Игорь

Посетитель
25.02.2009, 16:36
Нет оценки ответа

Мини-форум консультации # 161385

неизвестный

177863

= общий =    26.02.2009, 08:05
Спасибо за совет! Очень помогли.
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.