После горизонталного объединения ячеек в таблице Word, перестают вставлятся данные в
Доброе время суток форумчане
У меня есть шаблон « *.rtf», в который вместо некоторых слов в шаблоне (после их предварительного поиска « FindAndPasteTextDoc('&&example_table$$', ' ', 1, 2, 0, 1, clBlack);»),
подставляется пустая таблица ( CreateTable(5, 7, LTableID);), затем я в этой таблице объединяю строки ( Merge_Cells_Table(LT, 1, 1, 2, 1);).
Это все работает, если я не объединяю ячейки по горизонтали.
Если я объединю ячейки по горизонтали, то перестанут выводится все значения (которые выводились). Если этого объединения нет, то все прекрастно выводится.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
LTableID, LT: integer;
begin
CoInitialize(Nil);
Open_Doc_Template(ExtractFileDir(application.ExeName)+'\Template_example.rtf');
FindAndPasteTextDoc('&&example_table$$', ' ', 1, 2, 0, 1, clBlack);
LTableID := 1; //number table in doc
CreateTable(5, 7, LTableID);
LT := 1;
Merge_Cells_Table(LT, 1, 1, 2, 1);//объединяются 2 ячейки первого столбца по вертикали
// Merge_Cells_Table(LT, 1, 2, 1, 3); //объединяются 2 ячейки первой строки по горизонтале //<- если раскоментировать, то значения перестают вставляться во всю табл.
SetTextToTable(LT, 1, 1, 0, 'Значение1');
SetTextToTable(LT, 1, 2, 0, 'Значение2');
SaveDocAs(ExtractFileDir(application.ExeName)+'\output\', 'result_doc.rtf', 1);
end;
Дополнительные функции и процедуры:
Код:
function TForm1.CreateTable(ANumRows, ANumColumns: integer;
var ATableID: integer): boolean;
var
LSel: variant;
begin
CreateTable := true;
try
LSel := Words_Templs.Selection;
Words_Templs.ActiveDocument.Tables.Add(Range := LSel.Range, NumRows := ANumRows, NumColumns := ANumColumns);
begin
LSel.Tables.Item(1).Borders.item(-1).LineStyle := 1;
LSel.Tables.Item(1).Borders.item(-2).LineStyle := 1;
LSel.Tables.Item(1).Borders.item(-3).LineStyle := 1;
LSel.Tables.Item(1).Borders.item(-4).LineStyle := 1;
LSel.Tables.Item(1).Borders.item(-5).LineStyle := 1;
LSel.Tables.Item(1).Borders.item(-6).LineStyle := 1;
end;
ATableID := Words_Templs.ActiveDocument.Tables.Count;
except
CreateTable := false;
end;
end;
procedure TForm1.Merge_Cells_Table(AIDTable, ARowFrom, AColFrom, ARowTo, AColTo: integer);
begin
Words_Templs.ActiveDocument.Tables.Item(AIDTable).Cell(ARowFrom, AColFrom).
Merge(Words_Templs.ActiveDocument.Tables.Item(AIDTable).Cell(ARowTo, AColTo));
end;
function TForm1.SetTextToTable(AIDTable, ARow, AColumn, TypeInput: integer;
AText: string): boolean;
begin
SetTextToTable := true;
try
case TypeInput of
0: Words_Templs.ActiveDocument.Tables.Item(AIDTable).Columns.Item(AColumn).Cells.Item(ARow).Range.Text := AText;
1: Words_Templs.ActiveDocument.Tables.Item(AIDTable).Rows.Item(ARow).Cells.Item(AColumn).Range.Text := AText;
end;
except
SetTextToTable := false;
end;
end;
Где может быть ошибка?
Заранее спасибо за ответ.
|