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 ...