Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

hab mir eine kleines Programm zur Benzinverbrauchserfassung geschrieben, und möchte mir die Daten jetzt als Linien-Diagramm ausgeben lassen.

Hab schon selber ein bischen rumprogrammiert, aber ziemlich schnell festgestellt, dass das gar nicht so einfach ist. Zumindest, wenn man die Y-Achse dynamisch skalieren will.

Wollte jetzt mal fragen, ob irgendjemand eine Library oder Code kennt, der das für mich erledigt.

Hab schon auf sourceforge.net gesucht, aber nur Libs für Linux gefunden.

Das Diagramm sollte einfach auf ein Windowsfenster gezeichnet werden.

Geschrieben

Schau dir mal das "MS Chart Controll"-ActiveX an. hat mir bei der erstellung sehr geholfen.

Wenn du deine Daten aus einer DB ausliest kann ich dir noch "Microsoft ADO Data Controll" empfehlen. einfach mit der Recordsource abfragen erstellen und das Chart Controll darauf zugreifen lassen.

ohne DB gibt es hier -http://www.codeguru.com/controls/MSChart.shtml- eine schöne hilfe (allerdings auf englisch).

mfg

jasso

Geschrieben

Des wär super. Ich hab leider keine Möglichkeit gefunden Liniendiagramme da draus zu machen. Es gingen zwar die unterschiedlichsten Säulendiagramme, aber irgend ein anderes hab ich nicht hingebracht.

Geschrieben

Ich hoffe mal wir reden über des gleiche ActiveX-Element:confused: :

Microsoft Chart Control, version 6.0 (OLEDB)

da kann man ganz einfach über die Eigenschaften --> Diagramm --> Diagrammtyp Linie Einstellen.

Geschrieben

Oh, stimmt.

Irgendwie hatte ich da was anderes erwischt.

Aber des is ja grausam, was das alles für Files in das Projekt einfügt.

Aber trotzdem mal danke.

Mal schauen, ob ichs mit dem hinbring.

Geschrieben

ich habe jetzt das ActiveX Control eingebunden, und die Daten übergeben als eindimensionales Array, weil ich (momentan) nur eine Linie im Diagramm brauche.

Wie gesagt es handelt sich um ein Programm zum Benzinverbrauch erfassen. Ich will mir also über die Zeit, meinen durchschnittlichen Verbrauch über 100km darstellen lassen.

Also habe ich jetzt die Daten an das Control übergeben.

Die Y-Achse skaliert auch schon richtig, nur leider ist die X-Achse leer, und ich seh keine Linie in dem Diagramm.

Was muss ich denn da dann noch machen?

Geschrieben

wiso einen eindimensionalen Array?

um Werte in ein Diagramm eintragen zu können müssen doch für jeden Punkt ZWEI Werte vorhanden sein oder (in deinem fall halt Verbrauchsmenge und Zeit).

ansonsten kann ich mir vielleicht noch vorstellen dass du die Skalierungseinstellungen falsch gewählt hast.

Geschrieben

Wie kann ich denn ein Datum an das Array übergeben? Ich erstelle das Array ja nur mit einem Datentyp, in meinem Fall ein VT_I2 (short int).

Das Datum müsste ich als String übergeben.

Ausserdem hab ich das Datum und die Menge in zwei unterschiedlichen Variablen, in dem Beispiel wird aber nur eine zugewiesen.

Geschrieben

ich hoffe wir reden über das gleiche beispiel:

COleSafeArray saRet;

DWORD numElements[] = {10, 10}; // 10x10

// Create the safe-array...

saRet.Create(VT_R8, 2, numElements);

// Initialize it with values...

long index[2];

for(index[0]=0; index[0]<10; index[0]++) {

for(index[1]=0; index[1]<10; index[1]++) {

double val = index[0] + index[1]*10;

saRet.PutElement(index, &val);

}

}

// Return the safe-array encapsulated in a VARIANT...

m_Chart.SetChartData(saRet.Detach());

m_Chart.Refresh;

in diesem stehen alle Werte für das Diagramm in "saRet" und werden mit "PutElement" eingefügt. ich nehme mal an dass der erste wert (hier "index") den x-Achsen-Wert und der zweite (hier "val") den x-Achsen-Wert.

Genau weiß ich das allerdings auch nicht weil ich die Wertübergabe ja über ADO gemacht hab (automatische Skalierung und als Datenquelle das ADO-Steuerelement und der rest funzt automatisch :D )

Geschrieben

ja, über genau dieses Beispiel reden wir. Nur irgendwie versteh ich die Zusammenhänge zwischen den Variablen index und val nicht. Index ist ein Array der Länge 2, und val ist zweidimensional mit 10x10 Felder.

Wie hängen die zusammen?

Ich hab Messpunkte, quasi an einem Datum, und den Wert der Messung, das wäre dann die Menge.

Ich hab also von beiden gleich viele Felder....

Ich versteh das einfach net.

Geschrieben

Also meiner meinung nach is val ein ganz normaler double-Wert.

Na wie auch immer. Ich hoffe Du hast das ganze hingekriegt (und tut mir leid dass ich dir da nicht weiterhelfen kann. wie gesagt ich hab des ganze über ado gemacht)

Andere Frage:

wie kann ich das erstellte Diagramm dann Drucken?? hab mir schon ein paar themen über drucken angeschaut die mir allerdings allesamt nicht wirklich so ganz einleuchten:confused:

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...