Показать сообщение отдельно
  #1  
Старый 26.04.2011, 11:37
Максон Максон вне форума
Прохожий
 
Регистрация: 10.02.2011
Сообщения: 19
Репутация: 10
По умолчанию из Stringgrid в 2 таблицы Word

Здраствуйте.
У меня сложилась такая ситуация: есть 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.
Подскажите, пожалуйста, что здесь неверно?
Ответить с цитированием