Veröffentlicht 5. Oktober 200321 j 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.
8. Oktober 200321 j 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
8. Oktober 200321 j Autor Das hab ich auch schon gefunden, nur das bringt mit leider nichts, weil ich kein Säulendiagramm brauche, sondern ein Liniendiagramm.
8. Oktober 200321 j du kannst damit auf jeden fall auch liniendiagramme erstellen (hab ich nämlich gemacht). wie des geht kann ich dir morgen schreiben!
9. Oktober 200321 j Autor 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.
9. Oktober 200321 j 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.
9. Oktober 200321 j Autor 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.
12. Oktober 200321 j Autor 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?
12. Oktober 200321 j 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.
12. Oktober 200321 j Autor 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.
12. Oktober 200321 j 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 )
12. Oktober 200321 j Autor 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.
14. Oktober 200321 j 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:
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.