![]() |
Rave Fehler in OnBeforePrint mit Projekt Variable
Hi DPler,
ich habe in einem Projekt eine Report Datei an diese Übergeben ich Parameter um ein paar Regionen mit zu teilen an welcher Stelle sie positioniert werden sollen, entstanden ist das Projekt unter Delphi 2007 mit Rave Report 7.5 BE. Jetzt habe ich das Projekt auf Delphi 2009 mit Rave Report 7.6.2 BE umgestellt jedoch bekomme ich eine Zugriffsverletztung und als Quelle konnte ich die OnBeforePrint Events der Regionen im Rave Report ausmachen. Ursprüngliches Event, was noch unter D2007 / Rave 7.5 einwandfrei lief, jetzt aber nicht mehr.
Code:
Zu Testzwecken habe ich mal die Werte fest angegeben und jetzt klappt es. :gruebel:
function rgnTreatment_OnBeforePrint(Self: TRaveRegion);
begin Self.Visible := (RaveProject.GetParam('grb_Treatment') = '-1'); if (RaveProject.GetParam('grb_Treatment_Left') <> '') then Self.Left := StrToFloat(RaveProject.GetParam('grb_Treatment_Left')) / (254 / 10); end; if (RaveProject.GetParam('grb_Treatment_Top') <> '') then Self.Top := StrToFloat(RaveProject.GetParam('grb_Treatment_Top')) / (254 / 10); end; end OnBeforePrint;
Code:
Wieso kann man unter Delphi 2009 mit Rave 7.6.2 BE das nicht mehr machen, komisch ist auch lasse ich mir testweise ausgeben was
function rgnTreatment_OnBeforePrint(Self: TRaveRegion);
begin Self.Visible := (RaveProject.GetParam('grb_Treatment') = '-1'); if (RaveProject.GetParam('grb_Treatment_Left') <> '') then Self.Left := (20 / (254 / 10)); end; if (RaveProject.GetParam('grb_Treatment_Top') <> '') then Self.Top := (200 / (254 / 10)); end; end OnBeforePrint; in RaveProject.GetParam('grb_Treatment') steht so erhalte ich das was ich in dem Delphi Projekt übergebe, also korrekt. Nur sobald ich versuche eine Umwandlung in eine Gleitkommazahl durchzuführen und versuch damit zu rechnen bekomme ich einen Fehler. Ich hoffe es gibt eine Möglichkeit das das Ganze doch wieder funktioniert, ich bin echt am verzweifeln. mfg TUX |
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Ich habe noch mal ein paar Sachen ausprobiert und jetzt wird es noch merkwürdiger.
Bei der Angabe der Top Position klappt alles so wie es soll, jedoch bei Left geht nichts, die Anwendung wirft eine Zugriffsverletzung. Vor dem Execute des Reports wird per folgendem Code die Parameter übergeben.
Delphi-Quellcode:
RvProject.SetParam('grb_Treatment_Left', FloatToStr(0,787));
RvProject.SetParam('grb_Treatment_Top', FloatToStr(7,874));
Code:
:wiejetzt:
function rgnTreatment_OnBeforePrint(Self: TRaveRegion);
begin Self.Visible := (RaveProject.GetParam('grb_Treatment') = '-1'); //Funktioniert NICHT if (RaveProject.GetParam('grb_Treatment_Left') <> '') then Self.Left := StrToFloat(RaveProject.GetParam('grb_Treatment_Left')); end; //Funktioniert einwandfrei if (RaveProject.GetParam('grb_Treatment_Top') <> '') then Self.Top := StrToFloat(RaveProject.GetParam('grb_Treatment_Top')); end; end OnBeforePrint; Ich habe keinen Schimmer woran das liegen könnte. |
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Könnte es damit zusammenhängen, dass deine if-Statements kein begin aber ein end beinhalten? :shock:
|
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Das ist so schon in Ordnung die Ereignisse sind nicht in Delphi sondern im Rave Report selbst Programmiert,
Rave kennt "Begin" überhaupt nicht in diesem Zusammenhang. |
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Ist es korrekt, dass die Werte bei StrToFloat mit "," und nicht mit "." angegeben sind?
|
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Zitat:
eh aus einer Einstellungsdatei und wenn dort am Format etwas falsch wäre hätte ich längst irgendwelche Fehlermeldungen bekommen. |
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Einen hab ich noch :stupid: :
Wenn die Region nicht sichtbar ist, kann man dann die Eigenschaft Left bzw. Top verändern? Bzw. könnte es daran liegen, dass grb_treatment nicht korrekt gesetzt ist. |
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Nee daran liegt das auch alles nicht, ich habe mir ja zu Testzwecken ausgeben lassen was in grb_Treatment_Left steht und
es ist korrekt ein Wert da nur die String-Umwandlung oder was auch immer haut da rein. Bei "Top" geht ja alles und früher mit Delphi 2007 und Rave Report 7.5 klappte alles. Ich versteh das überhaupt nicht was das soll. |
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
So jetzt soll mir mal einer Sagen das das kein Bug im Rave Report ist, ich habe das OnBeforePrint Ereignis jetzt
so oft umgestellt und probiert es irgendwie zum laufen zu bewegen jedoch ist nichts zu machen es funktioniert immer nur eine Angabe der Position. 1. Versuch das ändern von Self.Left schlägt fehlt, Self.Top lässt sich ändern.
Code:
2. Versuch hier lässt sich Self.Left ändern aber jetzt nicht mehr Self.Top
function rgnTreatment_OnBeforePrint(Self: TRaveRegion);
begin Self.Visible := (RaveProject.GetParam('grb_Treatment') = '-1'); //Funktioniert NICHT if (RaveProject.GetParam('grb_Treatment_Left') <> '') then Self.Left := StrToFloat(RaveProject.GetParam('grb_Treatment_Left')); end; //Funktioniert einwandfrei if (RaveProject.GetParam('grb_Treatment_Top') <> '') then Self.Top := StrToFloat(RaveProject.GetParam('grb_Treatment_Top')); end; end OnBeforePrint;
Code:
Gibt es für Delphi 2009 / Rave Report 7.6.2 BE irgendein Update was diesen Fehler behebt?
function rgnTreatment_OnBeforePrint(Self: TRaveRegion);
begin Self.Visible := (RaveProject.GetParam('grb_Treatment') = '-1'); //Funktioniert NICHT if (RaveProject.GetParam('grb_Treatment_Top') <> '') then Self.Top := StrToFloat(RaveProject.GetParam('grb_Treatment_Top')); end; //Funktioniert einwandfrei if (RaveProject.GetParam('grb_Treatment_Left') <> '') then Self.Left := StrToFloat(RaveProject.GetParam('grb_Treatment_Left')); end; end OnBeforePrint; Oder irgendwelche Vorschläge das Ganze doch noch irgendwie zu lösen. |
Re: Rave Fehler in OnBeforePrint mit Projekt Variable
Hallo Tux,
mit merlin17 hatten wir einen Experten, der hier immer geholfen hat. Seit Mitte letzten Jahres hat er hier nicht mehr vorbei geschaut, aber du kannst ja mal eine PN versuchen oder in seiner Signatur auf den Blog klicken. Er hat im Februar diesen Jahres zwar auf FastReport umgestellt, aber vielleicht hilft er einem user in Not nochmal. :dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz