|
Компонент 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(XI,Y1,X2,Y2:
double;
Bitmap: TBitmap);
отображает растровое изображение
Bitmap в прямоугольнике, обеспечивая его масштабирование
в соответствии с размерами прямоугольника.
Внимание
Компонент TRvNDRWriter
имеет свойство canvas (см.
гл. 10), но использовать его нельзя — любые операции
с канвой не возымеют действия и ваши труды не будут
сохранены.
При использовании пары методов
start и Finish не нужно
предпринимать никаких дополнительных усилий для сохранения
отчета — это будет сделано Методом Finish.
Множество других свойств и методов
компонента (мы не будем останавливаться на них специально,
т. к. их использование достаточно прозрачно) обеспечивают
оформление отчета, управление страницами, настройку
принтера и т. д.
|