Содержание
Delphi + OpenOffice: пример программирования
Коллекцию процедур собъем в модуль ooprint.pas и сделаем небольшой пример печати отчета.

На компьютере:
- Windows XP SP2;
- Turbo Delphi Explorer;
- OpenOffice 2.2.

Отчет делается по шаблону proc.ott. Шаблон очень простой - в верхнем колонтитуле надпись, в поле документа - одна строка будущей таблицы.



Требуется получить отчет в две колонки. В левой - фото процессора, в правой - набор его характеристик. Шрифт различного начертания, для некоторых ячеек используется фон. Текст задается в программе, фотографии лежат в папке проекта. Само собой, в реальном отчете эти данные должны тягаться из базы. В результате работы программы получаем следующий отчет:



Текст примера:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses ooprint;

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin

  OpenOffice.ooInit(ExtractFilePath(Application.ExeName)+'proc.ott');
  OpenOffice.ooNextCell(12);
  OpenOffice.ooPrevCell(12);
  OpenOffice.ooGoDown(5,True);
  OpenOffice.ooMergCell;
  OpenOffice.ooCenterPara;
  OpenOffice.ooInsertImage(ExtractFilePath(Application.ExeName)+'celeron.bmp');
  OpenOffice.ooNextCell(1);
  OpenOffice.ooSelectCell(1);
  OpenOffice.ooCellColor;
  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Модель:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' Celeron M 430');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooSelectCell(1);
  OpenOffice.ooCellNoColor;
  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('ТП:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 65 нм');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Количество ядер:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 1');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Частота:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 1,73 ГГц');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('FSB:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 533 МГц');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Кэш L2:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 1 Мбайт');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooNextCell(10);
  OpenOffice.ooPrevCell(10);
  OpenOffice.ooGoDown(5,True);
  OpenOffice.ooMergCell;
  OpenOffice.ooCenterPara;
  OpenOffice.ooInsertImage(ExtractFilePath(Application.ExeName)+'pentium.bmp');
  OpenOffice.ooNextCell(1);
  OpenOffice.ooSelectCell(1);
  OpenOffice.ooCellColor;
  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Модель:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' Pentium M 780');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooSelectCell(1);
  OpenOffice.ooCellNoColor;
  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('ТП:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 90 нм');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Количество ядер:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 1');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Частота:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 2,26 ГГц');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('FSB:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 533 МГц');
  OpenOffice.ooNextCell(1);

  OpenOffice.ooBold(True);
  OpenOffice.ooPrintString('Кэш L2:');
  OpenOffice.ooBold(False);
  OpenOffice.ooPrintString(' 2 Мбайт');

  OpenOffice.ooClose;

  Form1.Close;

end;

end.

Содержание

© re-stichka.narod.ru
При публикации данного материала ссылка на источник обязательна

Hosted by uCoz