Moin !
Ich grübel da gerade über einem Problem (ne nennen wir es Herausforderung
) und habe aber noch keine Idee wie ich es praktisch umsetzen könnte. Evtl. hat ja hier jemand eine zündende Idee. Ich versuchs mal (hoffentlich) verständlich zu beschreiben...
Also, nehmen wir mal an wir haben ein Formular mit einem TChart (mit 3 Serien) und z.B. eine Klasse die Daten umrechnet. Die fiktive Klasse könnte z.B. so aussehen:
Delphi-Quellcode:
TMyClass = class(TPersistent)
public
{ public-Deklarationen }
Wert1,
Wert2,
Wert3 : Double;
constructor Create();
Procedure CalcValues(Input : String); // Wandelt den String um in 3 Double werte ...
published
{ published-Deklarationen }
end;
Was ich nun erreichen will ist folgendes:
Immer wenn ich bei einer Serie einen Wert einfüge, oder wenn in TMyClass neue Werte berechnet wurden möchte ich diese Werte verwenden. Einmal für ein Alarming (also z.B. Überprüfung ala Wert > 100) und einmal um eine Analoganzeige mit dem Wert zu befeuern.
Nun könnte man sich das einfach machen und für die 6 Möglichen Werte hart verdrahteten Code bereit stellen. Aber ich möchte das ganze dynamisch realisieren.
Bedeutet ich möchte vom User eine Art Liste anlegen lassen. Dort kann er sagen nimm mal den (letzten) Wert von Serie 2 des TChart und mache damit ein Alarming. Und dann nimm noch den Wert 3 aus TMyClass und zeige den in der Analoganzeige (oder sagen wir einfach in einem Edit).
So das ganze wird natürlich noch komplizierter. Denn wir nutzen
MDI Fenster und das bedeutet der User kann X Grafiken haben und ggf. auch X TMyClass Klassen.
Jetzt wäre meine Idee das man beim TChart z.B. das Series OnAfterAdd Event nutzt. Damit kriege ich generell mit wenn in der Grafik ein neuer Wert eingetragen wurde. Und bei der Klasse könnte man im CalcValues sicher auch die Werte bereitstellen.
Aber ich habe noch keinen Schimmer wie ich das dann mit der vom User erstellten Liste verknüpfen könnte.
Denn dann müsste ja bildlich gesprochen folgendes passieren:
Punkt in Serie eintragen und somit wird OnAfterAdd abgefeuert. Dort jetzt nachsehen ob für diese Serie ein Alarm oder eine Weitergabe des Werts an (z.B. ein Edit) vorgesehen ist. Tja und dann eben ggf. den Wert dem Alarming / der Werteanzeige zuführen.
Aber wie gesagt, mir fehlt da gerade ne zündende Idee wie ich das praktikabel und universell umsetzen könnte.
Jemand ne Idee ?
Ich hoffe ich habe es verständlich beschrieben