AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Rave - CustomConnection - Felder Farbe dyn ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Rave - CustomConnection - Felder Farbe dyn ändern

Ein Thema von TUX_der_Pinguin · begonnen am 9. Jun 2009 · letzter Beitrag vom 12. Jun 2009
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#1

Rave - CustomConnection - Felder Farbe dyn ändern

  Alt 9. Jun 2009, 08:03
Ich hoffe die Rave Experten sind schon wach

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.
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Rave - CustomConnection - Felder Farbe dyn ändern

  Alt 9. Jun 2009, 11:18
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:
{ Event for DataText193.OnBeforePrint }

function DataText193_OnBeforePrint(Self: TRaveDataText);
var
  Min : Float;
  Value : Float;
  Max : Float;

begin
Dann meckert der Compilier vom Rave jedoch das er im Hauptteil des Events den Bezeichner "Min" nicht kennt !?


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;
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Rave - CustomConnection - Felder Farbe dyn ändern

  Alt 11. Jun 2009, 19:43
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 ).
http://www.delphipraxis.net/internal...highlight=rave

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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Rave - CustomConnection - Felder Farbe dyn ändern

  Alt 12. Jun 2009, 07:45
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
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