Для реализации первого варианта необходимо в качестве источника печати указать файл:

if dlgSavePRN.Execute then begin
rsSystem.DoNativeOutput := False;
rsSystem.DefaultDest := rdFile;
rsSystem.SystemSetups := rsSystem.SystemSetups - [ssAllowSetup];
rsSystem.OutputFileName := dlgSavePRN.FileName;
rpProj ect.Execute;
end;

Как видите, здесь мы воспользовались методикой прямой печати, описанной в предыдущем разделе, указав в качестве приемника файл с расширением ргп, выбранный в стандартном диалоге выбора файла.

Если же нужно сохранить проект отчета в файле с расширением rav, можно ИСШШСВЯЬ МеТОД SaveToFile Компонента TRvProject:

if dlgSaveProject.Execute

then RvProjectl.SaveToFile(dlgSaveProject.FileName);

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

RvProjectl.Close;
RvProjectl.LoadFromFile(dlgOpenProject.FileName);
RvProjectl.Open;
Аналогичную функцию выполняет метод procedure SetProjectFile(Value: String);

компонента TRvProject.

КомпонентГЯиЛ/ОЯ Writer

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

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

TStreamMode = (smMemory, smTempFile, smFile, smUser);
property StrearrMode: TStrearrMode ;
smMemory - для вывода данных используется поток в памяти (объект типа TMemoryStream);
smTempFile - данные сохраняются во временном файле, в папке, определенной в операционной системе для хранения временных файлов;
smFile - данные сохраняются в файле;
smUser - данные передаются в поток, заданный разработчиком. Имя файла, в котором будет сохранен отчет, определяется свойством property FileName: String;
А для определения потока используется свойство property Stream: TStream;

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

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

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

var ReportStream: TMemoryStream;
ReportStream := TMemoryStream.Create;

try

PAMWriterl.StreairMcde := smUser;
RvNDRWriterl.Stream := ReportStream;

finally

ReportSt ream. Free;
end;

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

procedure Start;

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

procedure Finish;

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

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

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

with RvNDRWriterl do


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Октябрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс