powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / После горизонталного объединения ячеек в таблице Word, перестают вставлятся данные в ячейк
2 сообщений из 2, страница 1 из 1
После горизонталного объединения ячеек в таблице Word, перестают вставлятся данные в ячейк
    #39655565
Sergey-2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток форумчане
У меня есть шаблон «*.rtf», в который вместо некоторых слов в шаблоне (после их предварительного поиска « FindAndPasteTextDoc('&&example_table$$', ' ', 1, 2, 0, 1, clBlack) ;»),
подставляется пустая таблица ( CreateTable(5, 7, LTableID); ), затем я в этой таблице объединяю строки ( Merge_Cells_Table(LT, 1, 1, 2, 1); ).
Это все работает, если я не объединяю ячейки по горизонтали.
Если я объединю ячейки по горизонтали, то перестанут выводится все значения (которые выводились). Если этого объединения нет, то все прекрастно выводится.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
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;



Дополнительные функции и процедуры:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
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;



Где может быть ошибка?
Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
После горизонталного объединения ячеек в таблице Word, перестают вставлятся данные в ячейк
    #39655723
Sergey-2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя, если поменять местами вставку текста и объединение ячеек - то все РАБОТАЕТ.

ПРИЧЕМ, объединять сначало нужно ячейки по столбцам, а потом по строкам.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
SetTextToTable(3, 1, 1, 0, 'Колонка №1');
  SetTextToTable(3, 1, 2, 0, 'Колонка №2');
  SetTextToTable(3, 1, 3, 0, 'Колонка №3');
  SetTextToTable(3, 1, 4, 0, 'Колонка №4');
  Merge_Cells_Table(3, 1, 1, 2, 1);
  Merge_Cells_Table(3, 1, 4, 2, 4);
  Merge_Cells_Table(3, 1, 2, 1, 3);
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / После горизонталного объединения ячеек в таблице Word, перестают вставлятся данные в ячейк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]