So ich hoffe jemand von euch weiß woran das liegen kann das wenn ich folgende Routine ein
weiteres mal aufrufe das dann ein Fehler gemeldet wird. "Error #40 - Boolean expression expected".
Der erste Durchlauf funktioniert einwandfrei und dann war es das, ich muss die Anwendung beenden
und kann dann die Routine erst dann wieder benutzen.
Ich bekomme den Fehler weg wenn ich die Zeile RvProject.ProjMan.Compile weglasse nur dann werden
auch die Ereignisse nicht erzeugt. Und bei google findet sich nur ein Eintrag mit der gleichen
Fehlermeldung, hier aus dem Forum, nur ohne eine Lösung.
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;
//Event kompilieren
RvProject.ProjMan.Compile;
//Report ausführen und schließen
RvProject.ExecuteReport('MyReport');
RvProject.Close;
end;