Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

После горизонталного объединения ячеек в таблице Word, перестают


KBO78   (05.06.18 14:15

Доброе время суток форумчане
У меня есть шаблон «*.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.It em(ARow).Range.Text := AText;
     1: Words_Templs.ActiveDocument.Tables.Item(AIDTable).Rows.Item(ARow).Cells.Item(ACo lumn).Range.Text := AText;
   end;
 except
   SetTextToTable := false;
 end;
end;

Где может быть ошибка?
Заранее спасибо за ответ.


KBO78   (05.06.18 16:02[1]

Хотя, если поменять местами вставку текста и объединение ячеек - то все РАБОТАЕТ.

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

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)


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо