Показать сообщение отдельно
  #7  
Старый 22.06.2015, 00:17
pochemuch pochemuch вне форума
Прохожий
 
Регистрация: 10.06.2015
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

получается, что я эту таблицу потом вывожу в ворд, как отчет, здесь это как-то задать можно?
процедура вывода:
Код:
procedure TForm1.N2Click(Sender: TObject);
const//зазадается рапределение данных на листе
  wdAlignParagraphCenter = 1;
  wdAlignParagraphLeft = 0;
  wdAlignParagraphRight = 2;

  wdLineStyleSingle = 1;
var
sd: TSaveDialog;
  wdApp, wdDoc, wdRng, wdTable : OLEVariant;
i, j, Res : Integer;
  D : TDateTime;
  Bm : TBookMark;

begin
 Sd := SaveDialog1;
{Сохранение таблицы в документ, запрос разрешения для сохранения}
  if Sd.InitialDir = '' then Sd.InitialDir := ExtractFilePath( ParamStr(0) );
  if not Sd.Execute then Exit;
  if FileExists(Sd.FileName) then begin
    Res := MessageBox(0, Файл с данным именем уже существует. Перазаписать?'
      , Внимание! ', MB_YESNO + MB_ICONQUESTION + MB_APPLMODAL);
    if Res <> IDYES then Exit;
  end;

  // запуск MS Word.
  try
  wdApp:=CreateOleObject('word.Application') ;
  except
    MessageBox(0, ' Не удалось запустить MS Word. Действие отменено..'
      ,’внимание!', MB_OK + MB_ICONERROR + MB_APPLMODAL);
    Exit;
  end;

  //окно MS Word. видимо.
  wdApp.Visible := True;
  //создание нового документа.
  wdDoc := wdApp.Documents.Add;
  wdApp.ScreenUpdating := False;
  try
    wdRng := wdDoc.Content; // Диапазон, охватывающий всё содержимое документа.

    //Заголовок отчета

    wdRng.InsertAfter(План финансово-хозяйственной деятльености' '#13#10);
    //выравнивание по центру
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
    //параметры шрифта.
    wdRng.Font.Name := 'Times New Roman';
    wdRng.Font.Bold := True;
    wdRng.Font.Size := 12;

    //диапазон нового параграфа непосредственно за текущим диапазоном.
    wdRng.Start := wdRng.End;
    wdRng.InsertAfter(#13#10);
    D := Now;
    wdRng.InsertAfter('дата: ' + FormatDateTime('dd.mm.yyyy', D) + #13#10);
    wdRng.InsertAfter('время: ' + FormatDateTime('hh:nn:ss', D) + #13#10);
    // Сброс параметров параграфа.
    wdRng.ParagraphFormat.Reset;
    wdRng.InsertAfter('утверждаю '+ #13#10 );
    wdRng.InsertAfter('главный бухгалтер' + #13#10);
    wdRng.InsertAfter('Начальник преприятия + #13#10);
       wdRng.ParagraphFormat.Alignment := wdAlignParagraphRight;
       wdRng.ParagraphFormat.Reset;
    //выравнивание по левому краю.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;


    // Параметры шрифта.
    wdRng.Font.Reset;
    wdRng.Font.Size := 12;
    wdRng.Font.Bold := True;

    // Заголовок таблицы.

    wdRng.Start := wdRng.End;
    wdRng.InsertAfter(('Таблица '#13#10);
    wdRng.ParagraphFormat.Reset;
    wdRng.Font.Reset;
    wdRng.Font.Size := 12;
    wdRng.Font.Bold := False;

    // Таблица.

  if not ADOTable1.Active then ADOTable1.Open;

    wdRng.Start := wdRng.End;
    // Добавляем таблицу MS Word. создаём таблицу с двумя строками.
    wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2, ADOTable1.Fields.Count);
    // Параметры линий таблицы
    wdTable.Borders.InsideLineStyle := wdLineStyleSingle;
    wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
    // Сброс параметров параграфа.
    wdRng.ParagraphFormat.Reset;
    // Выравнивание всей таблицы - по левому краю
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    // Оформление шапки
    wdRng := wdTable.Rows.Item(1).Range; // Диапазон первой строки.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
    wdRng.Font.Size := 10;
    wdRng.Font.Bold := True;
    // Оформление первой строки данных - вторая строка в таблице
    // При добавлении следующих строк, их оформление будет копироваться с этой строки.	
    wdRng := wdTable.Rows.Item(2).Range; //Äèàïàçîí âòîðîé ñòðîêè.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    wdRng.Font.Size := 10;
    wdRng.Font.Bold := False;

    //шапка таблицы.
    for i := 0 to ADOTable1.Fields.Count - 1 do
      wdTable.Cell(1, i + 1).Range.Text := ADOTable1.Fields[i].DisplayName;
    //данные таблиц.
   ADOTable1.DisableControls;
    Bm := ADOTable1.GetBookMark;
    ADOTable1.First;
    i := 1; //текущая строка в MS Word.
    while not ADOTable1.Eof do begin
      Inc(i);
      // Если требуется, добавляем новую строку в конец таблицы.
      if i > 2 then wdTable.Rows.Add;
      // Записываем данные в строку таблицы MS Word.
      for j := 0 to ADOTable1.Fields.Count - 1 do
        wdTable.Cell(i, j + 1).Range.Text := ADOTable1.Fields[j].AsString;
      ADOTable1.Next;
    end;
    ADOTable1.GotoBookMark(Bm);
    ADOTable1.EnableControls;

      finally
    // Включение перерисовки окна MS Word.
    wdApp.ScreenUpdating := True;
Ответить с цитированием