Einzelnen Beitrag anzeigen

okoeller

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

Re: Rave einzelne Seiten drucken

  Alt 4. Jun 2008, 19:35
Ich hab es inzwischen wie folgt gelöst:
Vielleicht hilft mein Ansatz ja hier weiter.

Delphi-Quellcode:
uses
  . . .
  RpSystem, RpRave, RpDefine, RpRender, RpRenderCanvas,
  RpRenderPreview, RpBase, RpFiler, RpRenderPDF, RvClass, RvCSStd;
Im constructor :
Delphi-Quellcode:
   FReport := TRvProject.Create(self);

   FReport.ProjectFile := TFormularwesenRes.Instance.PluginFilePath + 'Risikoanalyse.rav';
   FReport.Open;
   FReport.ProjMan.ActiveReport.PageList.Clear;
   (* Seiten hinzufügen die immer enthalten sein sollen *)
   RS1 := FReport.ProjMan.ActiveReport.LoadedPage[0];
   RS2 := FReport.ProjMan.ActiveReport.LoadedPage[1];
   FReport.ProjMan.ActiveReport.PageList.Add(RS1);
   FReport.ProjMan.ActiveReport.PageList.Add(RS2);
Jede weitere Seite wird über Ja- Nein-RadioButtons aktiviert/deaktiviert.
Also das OnClick-Ereignis eines Radiobuttons mit einer Prozedur verbinden die der PageList eine weitere Seite hinzufügt oder löscht.

Delphi-Quellcode:
procedure TfrmRisikoanalyse.rbxxxJAClick(Sender: TObject);
begin
  Aktivierexxx(true);
end;

procedure TfrmRisikoanalyse.rbxxxNEINClick(Sender: TObject);
begin
  Aktivierexxx(false);
end;

procedure TfrmRisikoanalyse.Aktivierexxx(value: boolean);
begin
...
  ReportSeiteAktivieren('S2',value);      (* S2 ist der Name der Seite im RaveDesigner *)
end;

procedure TfrmRisikoanalyse.ReportSeiteAktivieren(Bez:string; const value: boolean);
begin
  FRSeite := FReport.ProjMan.FindRaveComponent('Risikoanalyse.'+Bez, nil) as TRavePage;
  if value = true then
  begin
    FReport.ProjMan.ActiveReport.PageList.Add(FRSeite);
  end else begin
    FReport.ProjMan.ActiveReport.PageList.Remove(FRSeite);
  end;
end;
Via ButtonClick das Anzeigen des Protokolls auslösen und vorher Feldparameter übergeben.

Delphi-Quellcode:
procedure TfrmRisikoanalyse.ProtokollErzeugen(Vorschau: boolean);
var
  ProtokollArt: string;
begin
  (* Parameter zuweisen*)
  FReport.SetParam('ProtokollArt', ProtokollArt);
  FReport.SetParam('Teilnehmer', FD.Teilnehmer);
  . . .
  
  if Vorschau then
  begin
  (*  zeigt in der Framekomponente eine Vorschau an *)
    FReport.Engine := FNDRWriter;
    FNDRWriter.StreamMode := smUser;
    FNDRWriter.Stream := FReportStream;
    FReport.ExecuteReport('Risikoanalyse');
    FPreview.NDRStream := FReportStream;
    FPreview.ScrollBox := ScrollBox1;
    FPreview.Render;
    FPreview.ZoomFactor := FPreview.ZoomPageWidthFactor;
  end else begin
    (* Zeigt den Standard Output Options Dialog an *)
   FReport.Engine := nil;
    FReport.Execute;
  end;
end;
Oliver
  Mit Zitat antworten Zitat