Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: RaveReport Event zur Laufzeit erzeugen

  Alt 23. Jan 2014, 09:34
Ich habe nun selbst die Lösung gefunden, man muss nur hartnäckig sein und darf nicht aufgeben.

Alles was ich bis dahin gemacht habe war korrekt, was aber gefehlt hat war das die Ereignisse
noch kompiliert werden mussten. Was ich dachte mit TRaveSimpleEvent.Execute zu erreichen, aber
das war es nicht. Richtig wäre "RvProject.ProjMan.Compile" gewesen.

Hier der komplette nun korrekt funktionierende Code...

Delphi-Quellcode:
uses
  RvLDCompiler;


procedure PrintReport;
var
  Report: TRaveReport;
  Page: TRavePage;
  DataBandTabData: TRaveDataBand;
  DV_TabData: TRaveDataView;
  Event: TRaveSimpleEvent;

begin
  //Report öffnen & Komponenten ermitteln
  RvProject.ProjectFile := glLocalAppDir+FILE_REPORT_GENERAL;
  RvProject.Open;
  Report := RvProject.ProjMan.FindRaveComponent('MyReport', nil) as TRaveReport;
  Page := RvProject.ProjMan.FindRaveComponent('Page1', Report) as TRavePage;
  DataBandTabData := RvProject.ProjMan.FindRaveComponent('DataBandTabData', Page) as TRaveDataBand;
  DV_TabData := RvProject.ProjMan.FindRaveComponent('DV_TabData', Page) as TRaveDataView;
  CreateFields(DV_TabData, nil, nil, True);

  //Feld erstellen
  DataText := DataBandTabData.CreateChild(TRaveDataText, 'dt_DynamischerFeldName') as TRaveDataText;
  DataText.DataField := 'DynamischerFeldName';
  DataText.DataView := DV_TabData;

  //Event erzeugen
  Event := TRaveSimpleEvent.Create;
  Event.Name := TableLayout.Tabs[Idx].Key+'OnBeforePrint';
  Event.ModuleOwner := Page;
  Event.Sender := DataText;
  Event.Owner := DataText;
  Event.Body := 'Self.Color := '+IntToStr(clRed)+';';

  //Event zuweisen
  DataText.OnBeforePrint := Event;

  //Event kompilieren
  RvProject.ProjMan.Compile;

  //Report ausführen und schließen
  RvProject.ExecuteReport('MyReport');
  RvProject.Close;

end;
  Mit Zitat antworten Zitat