Integration von RMChart in xBase++

Moderator: Moderatoren

Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

RMChart Komplett-Demo

Beitrag von Michael Rudrich »

brandelh hat geschrieben: ich habe meine erste völlig neu erzeugte RMChart-DLL Grafik mit meiner Klasse erzeugt - inkl. direkter Datenübergabe (inkl. dem DOUBLE-Array).
Wenn der Damm erstmal gebrochen ist, ist das Wasser nicht mehr zu halten.
Super Hubert!
Dann kannst Du ja auch die komplette RMChart-Demo von Rainer
mittels DLL Aufrufen nachbilden.
Somit können beide Wege aufgezeigt und genutzt werden.

Hier ist mein Soucecode für alle Active-X'ler ;-))
Die Demo zeigt alle Beispiele der VB-Demo von Rainer.
Du kannst sie so modifizieren, dass die Aufrufe nur über DLLs gehen!

Viele Grüße

Ach ja: Die DEMO verlangt einige JPG Bilder und CSV-Dateien aus dem
RMCHART Installationsverzeichnis, also vorher kopieren!

Ach ja (2): Die Demo gibts auch in eXPress++

// Diese kleine Demo wurde f
Michael Rudrich
UDF-Programmierer
UDF-Programmierer
Beiträge: 94
Registriert: Do, 22. Dez 2005 16:37

RMChart KOmplettDemo Nochmal

Beitrag von Michael Rudrich »

Hallo Zusammen...

ich weiß jetzt nicht, ob der Upload per Cut&Paste hier geklappt hat,
da ich in meinem Browser nichts mehr angezeigt bekomme...
Hoffentlich haben die über 1000 Zeilen nicht das ganze Board
ruiniert ;-)
Also wenn es nicht geklappt hat, dann schreibt mir kurz ne Mail
unter info@edv-rudrich.de und ich schicke den Sourcecode rum!

grüße
Michl
Gerd König
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 193
Registriert: Fr, 09. Jun 2006 7:52
Wohnort: Nähe Sömmerda

Beitrag von Gerd König »

Hallo Hubert,

ich habe heute Deine RMChart-Klasse ausprobiert, ist wirklich Klasse.

Das Problem des Einfrierens der Applikation nach Mausklick habe ich dadurch gelöst, daß ich auf die drawingArea des Dialogs zeichne und diese vor dem Zeichnen disable. Die Bedienelemente meines Dialogs (Buttons) befinden sich außerhalb der drawingArea.

Herzliche Grüße
Gerd
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

das ist eine interessante Idee. Da könnte man ja eventuell ein Static zwischenschieben. Muss ich mir mal bei Gelegenheit ansehen.
Gruß
Hubert
Gerd König
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 193
Registriert: Fr, 09. Jun 2006 7:52
Wohnort: Nähe Sömmerda

Beitrag von Gerd König »

Hallo Hubert und Rainer,

ich habe heute Huberts RMChart-Klasse zur Darstellung von Auswertungen in unser PPS-System integriert. Dazu generiere ich jeweils ein eigenes Dialogfenster mit einigen Tasten (Drucken, Speichern, Aktualisieren, Schließen) und eines horizontalen Scrollbars unterhalb der (verleinerten) DrawingArea. Die DrawingArea steht zu 100% dem Chart zur Verfügung. Damit kann ich diese wie in meinem vorangegangen Posting beschrieben disablen.

Beim Erzeugen des Fensters wird der Titel des Charts, das Datenarray mit Wertepaaren und ggf. ein Codeblock zum Aktualisieren übergeben.

Das Chart (x-Achse Datum als String, y numersich, z.B. Stückzahlen) habe ich mit dem Designer entworfen. Es sind 20 Einträge auf der x-Achse vorgesehen.
Das Array kann aber wesentlich mehr Wertepaare enthalten.
Deshalb werden zu Beginn nur die letzten 20 Wertepaare mit ..SetSeriesData angezeigt.
Da die y-Achse für automatische min-max-Einstellung vorgesehen ist, klappt das auch an dieser Stelle wunderbar mit dem Anzeigebereich.

Mit dem Scrollbar kann ich dann im Array scrollen und jeweils 20 Einträge zur Anzeige herausziehen und die Anzeige ebenfalls mit ..SetSeriesData hinsichtlich der Balken aktualisieren.

Ein Problem habe ich nur, wenn die y-Daten sich außerhalb des bisherigen Anzeigebereichs (z.B. min: 10, max: 120) befinden z.B. 3 oder 150.

Die Anzeige erfolgt dann über den Bereich hinaus.

Ich habe versucht, den Anzeigebereich mit ...SetYAXMinValue bzw. ...SetYAXMaxValue anzupassen. Das Ganze zeigt allerdings keine Wirkung.

Das gleiche Problem habe ich natürlich auch, wenn ich die Aktualisierung der Daten per Codeblock durchführe und es sind Werte dabei, die außerhalb des ursprünglichen Bereiches liegen.

Habt Ihr eine Idee.

Notfalls könnte ich in diesem Fall das Chart löschen und neu erzeugen.

Herzliche Grüße
Gerd
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

ich habe zwar die Klasse geschrieben, die tatsächliche Anwendung wurde aber nie realisiert, daher fehlt mir etwas die Übung.
Frag doch bei Rainer auf der RMChart Homepage, wie man das lösen kann, bzw. welche Funktion die internen Parameter so neu setzen, dass die Anzeige ganz refreshed wird.

Wenn ein Neuaufbau geht, wäre das eine Lösung.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Gerd König hat geschrieben: Ein Problem habe ich nur, wenn die y-Daten sich außerhalb des bisherigen Anzeigebereichs (z.B. min: 10, max: 120) befinden
z.B. 3 oder 150.
Die Anzeige erfolgt dann über den Bereich hinaus.

Habt Ihr eine Idee.
ich habe leider noch nicht aktive mit RM Chart gearbeitet, aber das
Problem "über den Bereich" hinaus kann man doch abfangen in dem
man :drawingArea:currentSize() mit den Werten vergleicht ?

Sollte der Dialog schon aufgebaut sein kann man doch den maximalen
Wert benutzen um den ganzen Dialog zu ":resize"n und damit die
:drawingArea auf eine passende Grösse zu bringen ?

gruss by OHR
Jimmy
Gerd König
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 193
Registriert: Fr, 09. Jun 2006 7:52
Wohnort: Nähe Sömmerda

Beitrag von Gerd König »

Hallo Jimmy,

ich meine damit nicht den Bereich der DrawingArea sondern den aktuellen Wertebereich auf der Y-Achse des Diagramms.
Das Diagramm muß also eine neue Skalierung der Y-Achse erhalten und neu gezeichnet werden.

Code: Alles auswählen

   ...
   ::RMC_SetYAXMaxValue(nRegion,0)
   ::RMC_SetYAXMinValue(nRegion,0)
   ::RMC_SetSeriesData(nRegion,nSeries,aData,NIL)
   ::RMC_Draw()
   ...
Viele Grüße
Gerd
Gerd König
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 193
Registriert: Fr, 09. Jun 2006 7:52
Wohnort: Nähe Sömmerda

Beitrag von Gerd König »

Hallo zusammen,

ich habe das Problem jetzt dahingehend gelöst, daß ich in einer Variablen den aktuellen Y-Wertebereich speichere. Beim Aktualisieren wird überprüft, ob der bisherige Bereich ausreicht. Wenn nicht, wird das bisherige Chart-Objekt gelöscht und ein neues erzeugt und die jetzt aktuellen Werte für Minimum und Maximum werden in der Variablen gesichert.

Grüße
Gerd
Antworten