![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здраствуйте.
У меня сложилась такая ситуация: есть Stringgrid, в него добавляются строки из Edit-ов и Combobox-ов. В Combobox выбирается значение "есть" или "нет". Эти значения также отображаются в последней колонке Stringgrid. При нажатии кнопки "документ" данные из Stringgrid со значением в последней колонке "есть" отображаются в таблице 1 , а данные со значением "нет" - в таблице 2 одного шаблона Word. Т.е. в документе у меня 2 таблицы. Чтобы не нагромождать код я убрал добавление строк из Stringgrid, оставил только нумерацию. Код:
procedure TForm2.DocbtnClick(Sender: TObject); var W, T,L,M, N: Variant; iRows :Integer; begin W := CreateOleObject('Word.Application'); W.Visible:=True; W.DisplayAlerts:=True; try W.Documents.Open(GetCurrentDir +'\mmm.dot',EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam); // обозначение таблицы ее номера T:=W.ActiveDocument.Tables.Item(1); // обозначение номера строки в определенной таблице N:=W.ActiveDocument.Tables.Item(1).Rows.Item(4); L:=W.ActiveDocument.Tables.Item(2); // обозначение номера строки в определенной таблице M:=W.ActiveDocument.Tables.Item(2).Rows.Item(4); //запуск цикла по строкам, т.к. количество столбцов фиксировано for iRows:=1 to strngrd1.RowCount-1 do begin T.Rows.Add(N);//добавление строк в таблице 1 L.Rows.Add(M);//добавление строк в таблице 2 //если 19 колонка и строка = "есть" тогда if strngrd1.Cells[19, iRows]='есть' then begin //нумерация строкв таблице 1 T.Cell(iRows+3 ,1).Range.Text:= IntToStr(iRows) + '.'; //заполнение таблицы данными //..... end; //если 19 колонка и строка = "нет" тогда if strngrd1.Cells[19, iRows]='нет' then begin //нумерация строк в таблице 2 L.Cell(iRows+3 ,1).Range.Text:= IntToStr(iRows) + '.'; //заполнение таблицы данными end; end; finally end; end; При вводе в Stringgrid данных , например, 2 строки с событием "есть" и 2 строки с событием "нет" в 2-х таблицах ворд добавляются по 4 строки и нумерация идет дальше, в таблице1 нумерация 1,2 , в таблице 2 нумерация 3,4. Подскажите, пожалуйста, что здесь неверно? |
#2
|
|||
|
|||
![]() немного переделал, добавление строк идет, но в конце нумерации появляются совсем другие числа
Код:
//запуск цикла по строкам for iRows:=1 to strngrd1.RowCount-1 do begin if strngrd1.Cells[19, iRows]='есть' then begin T.Rows.Add(N); //объявленная переменная счетчика таблицы1 for i:=1 to T.Rows.Count-1 do begin T.Cell(i+3 ,1).Range.Text:= IntToStr(i) + '.'; end; end; if strngrd1.Cells[19, iRows]='нет' then begin L.Rows.Add(M); //переменная для таблицы2 for j:=1 to L.Rows.Count-1 do begin L.Cell(j+3 ,1).Range.Text:= IntToStr(j) + '.'; end; end; |