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;