Einzelnen Beitrag anzeigen

okoeller

Registriert seit: 21. Nov 2006
66 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Rave einzelne Seiten drucken

  Alt 2. Jun 2008, 15:41
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
  Mit Zitat antworten Zitat