Einzelnen Beitrag anzeigen

TUX_der_Pinguin

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

RaveReport Event zur Laufzeit erzeugen

  Alt 22. Jan 2014, 12:03
Hey DPler,

Ich habe einen Report gebastelt in dem ich dynamisch Felder (DataText) hinzufüge.
Diese sollen dynamisch eingefärbt werden, normalerweise realisiere ich das per OnBeforePrint Ereignis im Report Designer.

Ich habe deshalb versucht an der gleichen Stelle wo ich auch das Feld hinzufüge ein Ereignis zu erzeugen und dieses dem Feld zugewiesen.

Jedoch passiert nichts beim Ausführen des Reports.

Delphi-Quellcode:
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;

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

end;
Ich habe leider keine Idee mehr was ich noch versuchen soll ...
  Mit Zitat antworten Zitat