![]() |
Rave - CustomConnection - Felder Farbe dyn ändern
Ich hoffe die Rave Experten sind schon wach :wink:
ich habe mir einen Report gebastelt auf dem je nach Situation Regionen ein bzw. ausgeblendet werden können. Dazu übergebe ich Parameter die ich in den entsprechenden Ereignissen (OnBeforePrint) der Regionen auswerte, dies klappt auch soweit wunderbar. Da jetzt einige Felder "rot" oder "grün" dargestellt werden sollen, bin ich dabei einen Weg zu finden dies zu realisieren. Um ein Beispiel zu nennen, ich habe eine Region erstellt auf dem befindet sich ein DataBand mit 15 Gruppen, jede Gruppe besteht aus einem Min, Max und dem Ist-Wert. Das DataBand ist mit einem DataView Objekt verknüpft und die Daten stammen nicht aus einer Datenbank sondern werden via RvCustomConnection Komponente an den Report übergeben. DataBand: Min01 Min02 Min03...Min15 Value01 Value02 Value03...Value15 Max01 Max02 Max03...Max15 So jetzt dachte ich mir ich erstelle für jedes Ist-Feld (Value01) ein OnBeforePrint Event worin der Werte mit dem Min und dem Max Wert verglichen wird und dann entsprechend die Farbe gesetzt wird. Nur weiß ich nicht wie ich auf die Felder zugreifen kann, ob DataView.Value01 oder DataText1 ich erhalte beim Kompilieren des Scripts im Rave Designer immer eine Fehlermeldung. Ich hoffe ich konnte mein Problem genau genug erläutern und es wäre Super wenn einer der Experten mir auf die Sprünge helfen kann, das ist eins der letzten Puzzelstücke zum fertigen Report. |
Re: Rave - CustomConnection - Felder Farbe dyn ändern
So ich habe mal etwas ausprobiert und habe eine Möglichkeit gefunden die Texte entsprechend dynamisch anzupassen.
Ich habe im OnBeforePrint Event eines DataText Feldes entsprechenden Code eingefügt. Da ich jetzt den Code in weiteren Feldern hinzufügen müßte, habe ich mich gefragt ob ich nicht eine Funktion schreiben kann und ich in dem Event nur die Funktion aufrufe!? Aber ich habe nirgendwo eine Möglichkeit gefunden eigene Funktionen zuschreiben, vielleicht geht das auch mit der Version nicht die meinem Delphi 2007 Prof beiliegt. Dann wollte ich evtl. noch den Textvergleich ändern und nicht schreiben Self.Text >= DataText164.Text sondern das in ein Gleitkommawert umwandeln, jedoch bekomme ich die Meldung das '7.150' kein gültiger Gleitkommawert ist, hat jemand eine Idee wie ich das abhängig von der Betriebssystemeinstellung realisieren kann. Also sowas wie MinWert := StrToFloat(StringReplace(DataText164.Text, '.', <Dezimaltrennzeichen>)); in Delphi wäre das ja kein Akt nur wie geht sowas im Rave. Da ich in dem Event auch irgendwie keine Eigenen Variablen deklarieren kann ist das eh noch komplizierter. Ich kann zwar im Kopf Variablen deklarieren.
Delphi-Quellcode:
Dann meckert der Compilier vom Rave jedoch das er im Hauptteil des Events den Bezeichner "Min" nicht kennt !?
{ Event for DataText193.OnBeforePrint }
function DataText193_OnBeforePrint(Self: TRaveDataText); var Min : Float; Value : Float; Max : Float; begin
Delphi-Quellcode:
{ Event for DataText193.OnBeforePrint }
function DataText193_OnBeforePrint(Self: TRaveDataText); begin if (RaveProject.GetParam('BWPrint') = '0') then //Min und Max Sollwert vorhanden if (DataText164.Text <> '') and (DataText208.Text <> '') then if (Self.Text >= DataText164.Text) and (Self.Text <= DataText208.Text) then Self.Color := clGreen; else Self.Color := clRed; end; end; //Nur Min Sollwert vorhanden if (DataText164.Text <> '') and (DataText208.Text = '') then if (Self.Text >= DataText164.Text) then Self.Color := clGreen; else Self.Color := clRed; end; end; //Nur Max Sollwert vorhanden if (DataText164.Text = '') and (DataText208.Text <> '') then if (Self.Text <= DataText208.Text) then Self.Color := clGreen; else Self.Color := clRed; end; end; end; end OnBeforePrint; |
Re: Rave - CustomConnection - Felder Farbe dyn ändern
Hallo ich würde das trotzdem versuchen über Datamirrorsections zu lösen, mit den events bin ich nie richtig glücklich geworden. die DMS kannst Du auch kopieren und nur das Feld ändern.
Du kannst auch mal hier guggn, hier steht was zu "ungleich" Vergleichen. Versuche auch mal, wie in den beiden Links, nicht aufs Datatext.text, sondern gleich aufs dataviewFeld zuzugreifen (nicht DataView.Value01 sondern ohne Punkt ;-) ). ![]() Da du alles über eine Customconnection übergibst: denkbarwäre doch auch, das du die Auswertung bereits in Delphi machst und über ein Zusatzfeld die Farbe übergibst (z.B. 1 = rot, ...) und dann in Rave nur diese Farbe auswerten und darauf reagieren. Das die Daten nicht aus einer DB kommen, macht die Sache doch noch einfacher, da problemlos zusätzliche Felder übergeben kannst. Gruß Frank |
Re: Rave - CustomConnection - Felder Farbe dyn ändern
Also mit den DataMirrorSections habe ich noch nie etwas gemacht, habe auch noch nicht so recht verstanden wie das läuft.
Ich habe jedoch einen anderen Weg gefunden, wie du auch vorschlägst übergebe ich noch einen weiteren Wert und zwar die Farbe die ich dann entsprechend im Programm auswerte, da ich dort bereits eine entsprechende Funktion habe die mir ganz einfach die entsprechende Farbe ermittelt. Das Problem wäre auch mit der Lokalisierung, da es sich um Gleitkommawerte handelt müßte ich immer schauen welches Zeichen das Dezimaltrennzeichen ist und dann entsprechend den String in einen Gleitkommawert umwandeln, desweiteren kann es passieren das ein übergebener Wert wie folgt aussieht "<000.1" also müßte ich noch das Zeichen "<" aus dem String entfernen und das alles im Report zu realisieren ist doch etwas zu umfangreich. Desweiteren müßte ich den Code in jedes Ereignis kopieren da ich annehme das man keine Funktionen bauen kann im Report die man dann nur im Ereignis aufruft. Das wenn man einen Feld ansprechen will nicht unbedingt das DataText Feld sondern direkt das DataView Feld nehmen kann hatte ich mir zwar gedacht aber das man den "Punkt" weglassen muß wußte ich nicht, klingt auch nicht direkt logisch für mich, aber das soll ja nix heißen ;-) Vielen dank für die Antwort. mfg TUX |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 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