Я пытаюсь сделать таблицы внутри таблиц в WORD. конечно, в финальной программе это будет динамическое, чего нет в этом примере.OLE automation - WORD tabels (Delphi)
Вот мой пример кода.
var
aTable, bTable, cTable : OLEVariant;
begin
m_WordApplication := CreateOleObject('Word.Application') ;
m_WordDocument := m_WordApplication.Documents.Add;
aTable := m_WordDocument.Tables.Add(m_WordApplication.Selection.Range, 2, 1);
aTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
bTable := m_WordDocument.Tables.Add(aTable.Cell(1, 1).Range, 2, 1);
bTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
bTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
cTable := m_WordDocument.Tables.Add(aTable.Cell(2, 1).Range, 3, 1);
cTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
cTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;
m_WordDocument.SaveAs('C:/test.doc', False) ;
m_WordApplication.Quit(False);
Во-первых, я поставил новую таблицу (2 строки, 1 колонка) на позиции курсора, а затем я попытаться поставить вторую таблицу в ячейке (1,1) и третье место в клетке (2,1) из первая таблица. вторая таблица также имеет 2 строки и 1 столбец, но третья таблица имеет 3 строки и 1 столбец. но вместо того, что я хочу, я получаю вторую и третью таблицу с только одной строкой, независимо от того, что я что-то убираю в ячейке или нет. Всегда вижу только последнюю строку, которую я помещаю в эту таблицу.
еще больше, если я положил 1 строку и 2 стол таблицы внутри первой таблицы, чем все нормально.
Вы можете мне помочь.
спасибо, Rok
Может быть, вы можете редактировать свой пост, чтобы сделать его более удобочитаемый. (Больше всего: правильное написание) –
Также я настоятельно рекомендую использовать раннее связывание (= использовать интерфейсы из импортированного Word_TLB), который имеет ряд преимуществ перед поздним связыванием (= using OleVariants) –