C++Builder 2010 RaveReport - Linie zeichnen bei OnGetText
-
Hallo,
ich verwende in meinem Projekt den RaveReport 7.7.0. Ich habe auf meinem Report ein DataViewDataBand, auf dem eine horrizontale Linie vorhanden ist. Es werden nun einzelne Namen aufgeführt. Die Namen kommen aber auch öfter untereinander vor. Sieht ungefähr so aus:
Müller 112
Müller 113
Müller 117
Meier 888
Meier 879
Schulze 556Jetzt möchte ich die Linie aber nur zeichnen lassen, wenn sich der Name geändert hat. Dazu habe ich im EventEditor zu dem DataText (dort wird der Name ausgegeben) das Event "OnGetText" genutzt, um den aktuellen Wert zu erhalten. Diesen vergleiche ich nun und bei ungleich soll die Linie gezeichnet werden. Hier mal mein Code:
newVAR := Value; if newVAR = oldVAR then HLine3.Visible := False; else HLine3.Visible := True; oldVAR := newVAR; end if;
Das Problem ist, dass der Wert irgendwie nicht verglichen wird und die Linie somit immer gedruckt wird.
Kann da jemand helfen?
Danke
Torsten
-
Hallo,
ich habe es bereits gelöst
Denn man muss wissen, dass die o.g. Funktion bei jedem Eintrag nur einmal durchlaufen wird
Somit ist die Speicherung des alten Wertes natürlich hinfällig. Denn dieser steht ja beim nächsten Durchlauf nicht mehr zur Verfügung.
Die Lösung ist halt, einen Parameter im jeweiligen RaveReport zu erzeugen. In diesen Parameter schreibt man dann halt den alten Wert. Beim nächsten Durchlauf wird dieser Parameter erst wieder gelesen, dann verglichen und ggf. neu gesetzt. Das ganze sieht dann so aus:function... var newVAR: String; oldVAR: String; begin oldVAR := RaveProject.GetParam('oldVAR'); newVAR := Value; if newVAR = oldVAR then HLine3.Visible := False; else HLine3.Visible := True; RaveProject.SetParam('oldVAR', newVAR); end; end OnGetText;
Gruß
Torsten