Иллюстрированный самоучитель по Delphi 7 для профессионалов

Компонент TRvNDRWriter

Компонент TRvNDRWriter предназначен для сохранения отчетов в файлах. При этом используется двоичный формат NDR.

Приемник данных определяется свойством:

type
TStreamMode = (smMemory, smTempFile, smFile, smUser); property StreamMode: TStreamMode;

Где:

  • smMemory – для вывода данных используется поток в памяти (объект типа TMemoryStream);
  • smTempFile – данные сохраняются во временном файле, в папке, определенной в операционной системе для хранения временных файлов;
  • smFile – данные сохраняются в файле;
  • smUser – данные передаются в поток, заданный разработчиком.

Имя файла, в котором будет сохранен отчет, определяется свойством:

property FileName: String;

А для определения потока используется свойство:

property Stream: TStream;

Таким образом, если вы хотите использовать для сохранения отчета файл, перед использованием компонент настраивается, например, так:

RvNDRWriterl.StreamMode: = smFile; RvNDRWriterl.FileName: = ReportFilePath;

Если вы планируете использовать поток, сделайте следующим образом:

var ReportStreara: TMemoryStreain;
ReportStream: = TMemoryStream.Create/try
RvNDRWriterl.StreamMode: = smUser;
RvNDRWriterl.Stream: = ReportStream;
finally
ReportStream.Free;
end;

Но сначала этот отчет необходимо создать. Для этого используется обширный набор методов, позволяющих отображать текст и графику, создавать таблицы и заполнять их данными. Перед началом работы следует вызвать метод:

procedure Start;

…а по окончании создания отчета использовать метод:

procedure Finish;

Например, следующий фрагмент кода создает в отчете текст с заданным положением:

with RvNDRWriterl do
begin
Start;
Units: = unMM;
SetFont('Times New Roman', 14);
Bold: = True;
OriginX: = 0.0;
OriginY: = 0.0;
GotoXY(1.0, 12.0);
Print('Заголовок ttl');
GotoXY(6.0, 18.0);
Println('Заголовок 12');
GotoXY(6.0, 24.0);
Println('Заголовок 13');
GotoXY(6.0, 30.0);
PrintIn('Заголовок #4');
Finish;
end;

А вот так можно нарисовать прямоугольник и разместить в нем изображение:

with RvNDRWriterl do
begin
Start;
Units: = unMM;
SetBrush(clBlue, bsSolid, nil);
Rectangle (5.0, 35.0, 65.0, 95.0);
Bitmap: = TBitmap.Create;
Bitmap.LoadFromFile('factory.BMP');
PrintBitmapRect(10.0, 40.0, 60.0, 90.0, Bitmap);
Bitmap.Free;
Finish;
end;

В данном фрагменте кода метод:

procedure PrintBitmapRect(X1,Y1,X2,Y2: double;
Bitmap: TBitmap);

…отображает растровое изображение Bitmap в прямоугольнике, обеспечивая его масштабирование в соответствии с размерами прямоугольника.

Внимание
Компонент TRvNDRWriter имеет свойство canvas (см. гл. 10), но использовать его нельзя – любые операции с канвой не возымеют действия и ваши труды не будут сохранены
.

При использовании пары методов start и Finish не нужно предпринимать никаких дополнительных усилий для сохранения отчета – это будет сделано Методом Finish.

Множество других свойств и методов компонента (мы не будем останавливаться на них специально, т. к. их использование достаточно прозрачно) обеспечивают оформление отчета, управление страницами, настройку принтера и т. д.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.