Hallo,
gibt es hier noch andere Vorschläge.
Ich möchte den Execute nur einmal am Ende ausführen, da die Möglichkeit bestehen soll die Seiten in >einer< PDF auszugeben.
So sieht mein Code bisher aus (3 Report-Seiten).
Delphi-Quellcode:
constructor TfrmRisikoanalyse.Erzeugen(FDaten: TFormulardaten; Owner: TWinControl);
begin
inherited Create(nil);
Parent := Owner;
FD := TFormulardaten.Erzeugen;
FD := FDaten;
FReport := TRvProject.Create(self);
FNDRWriter := TRvNDRWriter.Create(self);
FPreview := TRvRenderPreview.Create(self);
FRenderPDF := TRvRenderPDF.Create(self);
FReportStream := TMemoryStream.Create;
Init;
end;
procedure TfrmRisikoanalyse.ProtokollErzeugen(Vorschau: boolean);
var
ProtokollArt: string;
begin
FReport.ProjectFile := TFormularwesenRes.Instance.PluginFilePath + 'Risikoanalyse.rav';
FReport.Open;
ProtokollArt := FD.Produkt;
(* Angeben auf welcher Seite die Componente liegt*)
FPage := FReport.ProjMan.FindRaveComponent('Risikoanalyse.S1', nil) as TRavePage;
(* Die Bild-Komponente ansprechen*)
FLogo := FReport.ProjMan.FindRaveComponent('Logo', FPage) as TRaveBitmap;
(* Der Componente einen Pfad zuweisen*)
FLogo.FileLink := TFormularwesenRes.Instance.PluginFilePath + 'Logo_150.bmp';
FPage := FReport.ProjMan.FindRaveComponent('Risikoanalyse.S2', nil) as TRavePage;
FLogo := FReport.ProjMan.FindRaveComponent('Logo2', FPage) as TRaveBitmap;
FLogo.FileLink := TFormularwesenRes.Instance.PluginFilePath + 'Logo_150.bmp';
FPage := FReport.ProjMan.FindRaveComponent('Risikoanalyse.S3', nil) as TRavePage;
FLogo := FReport.ProjMan.FindRaveComponent('Logo3', FPage) as TRaveBitmap;
FLogo.FileLink := TFormularwesenRes.Instance.PluginFilePath + 'Logo_150.bmp';
FReport.SetParam('ProtokollArt', ProtokollArt);
(*
Hier jetzt die entsprechenden Seiten auswählen bzw. die nicht gewollten Seiten unten nicht erzeugen lassen.
Die DataText-Elemente über SetParam-Anweisungen füllen.
*)
if Vorschau then
begin
(* zeigt in der Framekomponente eine Vorschau an *)
FReport.Engine := FNDRWriter;
FNDRWriter.StreamMode := smUser;
FReportStream := TMemoryStream.Create;
FNDRWriter.Stream := FReportStream;
FPreview.NDRStream := FReportStream;
FReport.Execute;
FPreview.ScrollBox := ScrollBox1;
FPreview.Render;
FPreview.ZoomFactor := FPreview.ZoomPageWidthFactor;
end else begin
(* zeigt den Druckdialog direkt an mit der Möglchkeit die Datei als PDF ausgeben zu können*)
FReport.Engine := nil;
FReport.Execute;
end;
end;
Oliver