Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Rave Fehler in OnBeforePrint mit Projekt Variable (https://www.delphipraxis.net/149823-rave-fehler-onbeforeprint-mit-projekt-variable.html)

TUX_der_Pinguin 31. Mär 2010 09:29


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:
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;
Zu Testzwecken habe ich mal die Werte fest angegeben und jetzt klappt es. :gruebel:
Code:
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;
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
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

TUX_der_Pinguin 31. Mär 2010 12:54

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:
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;
:wiejetzt:

Ich habe keinen Schimmer woran das liegen könnte.

MrSpock 31. Mär 2010 13:28

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:

TUX_der_Pinguin 31. Mär 2010 13:35

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.

MrSpock 31. Mär 2010 13:37

Re: Rave Fehler in OnBeforePrint mit Projekt Variable
 
Ist es korrekt, dass die Werte bei StrToFloat mit "," und nicht mit "." angegeben sind?

TUX_der_Pinguin 31. Mär 2010 13:39

Re: Rave Fehler in OnBeforePrint mit Projekt Variable
 
Zitat:

Zitat von MrSpock
Ist es korrekt, dass die Werte bei StrToFloat mit "," und nicht mit "." angegeben sind?

Das war nur ein Beispiel, kann sein das ich da Punkt hätte nehmen müssen aber im richtigen Projekt kommen die Werte
eh aus einer Einstellungsdatei und wenn dort am Format etwas falsch wäre hätte ich längst irgendwelche Fehlermeldungen
bekommen.

MrSpock 31. Mär 2010 13:56

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.

TUX_der_Pinguin 31. Mär 2010 14:41

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.

TUX_der_Pinguin 1. Apr 2010 11:30

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:
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;
2. Versuch hier lässt sich Self.Left ändern aber jetzt nicht mehr Self.Top
Code:
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;
Gibt es für Delphi 2009 / Rave Report 7.6.2 BE irgendein Update was diesen Fehler behebt?

Oder irgendwelche Vorschläge das Ganze doch noch irgendwie zu lösen.

MrSpock 1. Apr 2010 12:30

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 20:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz