![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброе время суток форумчане
У меня есть шаблон «*.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;Где может быть ошибка? Заранее спасибо за ответ. |