FinalFantasy Geschrieben 5. Oktober 2003 Geschrieben 5. Oktober 2003 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. Zitieren
jasso Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 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 Zitieren
FinalFantasy Geschrieben 8. Oktober 2003 Autor Geschrieben 8. Oktober 2003 Das hab ich auch schon gefunden, nur das bringt mit leider nichts, weil ich kein Säulendiagramm brauche, sondern ein Liniendiagramm. Zitieren
jasso Geschrieben 8. Oktober 2003 Geschrieben 8. Oktober 2003 du kannst damit auf jeden fall auch liniendiagramme erstellen (hab ich nämlich gemacht). wie des geht kann ich dir morgen schreiben! Zitieren
FinalFantasy Geschrieben 9. Oktober 2003 Autor Geschrieben 9. Oktober 2003 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. Zitieren
jasso Geschrieben 9. Oktober 2003 Geschrieben 9. Oktober 2003 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. Zitieren
FinalFantasy Geschrieben 9. Oktober 2003 Autor Geschrieben 9. Oktober 2003 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. Zitieren
FinalFantasy Geschrieben 12. Oktober 2003 Autor Geschrieben 12. Oktober 2003 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? Zitieren
jasso Geschrieben 12. Oktober 2003 Geschrieben 12. Oktober 2003 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. Zitieren
FinalFantasy Geschrieben 12. Oktober 2003 Autor Geschrieben 12. Oktober 2003 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. Zitieren
jasso Geschrieben 12. Oktober 2003 Geschrieben 12. Oktober 2003 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 ) Zitieren
FinalFantasy Geschrieben 12. Oktober 2003 Autor Geschrieben 12. Oktober 2003 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. Zitieren
jasso Geschrieben 14. Oktober 2003 Geschrieben 14. Oktober 2003 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: Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.