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