TChart Beispiel



  • Versuch mal so:

    Chart1->Series[0]->AddXY(j,StringToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    


  • Danke, hab's probiert, aber es kommt die Meldung:

    [C++ Fehler] UnitGraphik.cpp(326): E2268 Aufruf der undefinierten Funktion 'StringToFloat'



  • sorry, war mein Fehler:

    Chart1->Series[0]->AddXY(j,StrToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    

    so müsste es gehen



  • Ich habe es auch mit StrToFloat probiert, aber da kommt dann die Meldung:

    [C++ Fehler] UnitGraphik.cpp(326): E2034 Konvertierung von 'TStrings' nach 'AnsiString' nicht möglich
    

    Verstehe ich absolut nicht, warum er mit String nicht zufrieden ist ??

    LG
    Eliza



  • tut mir leid, da bin ich überfragt.
    Bei mir kommt der Fehler nicht.



  • Hallo Sonic,

    wenn dich interessiert, ich hab's rausbekommen:

    Chart1->Series[0]->AddXY(j,StrToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    

    so funktionierts 😉
    LG
    Eliza



  • [quote="*Eliza"]Hallo Sonic,

    wenn dich interessiert, ich hab's hinbekommen:

    Chart1->Series[0]->AddXY(j,StrToFloat(Memo1->Lines->Strings[j]),"",clTeeColor);
    

    dein Vorschlag war schon richig, ich habe irgendwie einen Fehler im Code reingebracht.
    Danke.

    LG Eliza



  • Ich bin vor Freude fast vom Stuhl gefallen 🙂



  • Hallo @all,

    und noch eine Frage zu TChart:

    Weiß jemand, wie man es in TChart einrichtet oder programmiert, dass stellenweise keine durchgezogenen Linien gemacht werden.

    z.B ich habe die Werte 1,2,3,4,5,6,7,8,9 (Beispielwerte jetzt)

    Der Grapfh soll z.B von 1-4 eine durchgezogene Linie zeichnen.
    5 aussparen, (aber vielleicht einen Punkt hinmachen)
    und dann wieder von 6-9 eine durchgezogene Linie.

    Vielleicht weiß es hier ja jemand. Danke für die Antworten vorab.

    LG Eliza



  • Das geht so:

    AnsiString Beschriftung_X_Achse = "irgendwas";
    
    Chart1->Series[0]->AddNull(Beschriftung_X_Achse);
    


  • Hallo sonic,

    ich verstehe es ehrlich gesaagt nicht ganz.
    jezt bezogen auf mein Beipiel, wie würde das aussehen?

    LG
    Eliza



  • Chart1->Series[0]->AddXY(0,1,"",clTeeColor);
    Chart1->Series[0]->AddXY(1,2,"",clTeeColor);
    Chart1->Series[0]->AddXY(2,3,"",clTeeColor);
    Chart1->Series[0]->AddXY(3,4,"",clTeeColor);
    Chart1->Series[0]->AddNull("");
    Chart1->Series[0]->AddXY(5,5,"",clTeeColor);
    Chart1->Series[0]->AddXY(6,6,"",clTeeColor);
    Chart1->Series[0]->AddXY(7,7,"",clTeeColor);
    Chart1->Series[0]->AddXY(8,8,"",clTeeColor);
    Chart1->Series[0]->AddXY(9,9,"",clTeeColor);
    


  • sonic_1233 schrieb:

    ...

    Zu Ostern postest du das für ihn als Schleife 😃



  • Schleifen kosten bei mir Aufpreis 🕶



  • Hallo,

    nochmal zum (nicht)-Verbinden von Graphen

    ich habe folgenden Code

    Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
                if (mlk1.mMilch[j]==0)
                {
    
                 Chart1->Series[0]->AddNull("");
                }
    

    in der Struktur mlk1 kann irgendwo eine 0 vorkommen.
    Diese soll nicht mit dem vorhergehenden und mit dem nachkommenden Wert verbunden werden. Also ein unterbrochener Graph
    Wenn zb. die Werte im mkl1 um die O etwa so aussehen 5,0,8
    soll zwischen 5 und 8 keine Verbindungslinie gezeichnet werden.

    bis jetzt, wie mein Code ist, zeichnet er von 5 bis O eine Linie aber dann von O bis 8 keine mehr (5 und 8 sind nur Beispielwerte)

    Weiß jemand wie ich mein Problem lösen?

    LG
    Eliza



  • Wenn du das genau so stehen hast, dann fügst du den Wert mlk1.mMi[j] ja zweimal hinzu, wenn er 0 ist.
    einmal
    Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
    und wenn er 0 ist nochmal
    Chart1->Series[0]->AddNull("");
    Wäre doch eher:

    if (mlk1.mMilch[j]==0)
    {
        Chart1->Series[0]->AddNull("");
    }
    else
    {
        Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
    }
    

    EDIT: ist da jetzt eigentlich nen String oder ne Zahl in mlk1.mMilch[j]?
    Dann müsste das if ja auf "" oder "0" oder was auch immer testen und nicht 0.

    mfg
    xXx



  • evtl. auch das

    if (mlk1.mMilch[j]==0)
    {
        Chart1->Series[0]->AddXY(j,0,"",clNone);
    }
    else
    {
        Chart1->Series[0]->AddXY(j,StrToFloat(mlk1.mMi[j]),"",clTeeColor);
    }
    

    So kann man auch ungeordnete Werte eingeben.



  • Danke für eure Hilfe, jetzt passts!

    LG Eliza



  • Hallo,

    weiß jemand wie man bei verschiedenen Serien jeweils die Achsen "flexibel" anpassen kann?

    Also z.B bei Series[0] Achsen in Prozentangabe und Kommazahlen
    Bei Series[1] Achsen Ganzahlig/Absolutwerte.

    Bei Series[2] eventuell wieder anders.

    LG
    Eliza



  • da das Chart nur 2 Achsen (Rechte und Linke für Y oder Oben und Unten für 😵 hat, kannst du auch nur 2 verschiedene Skalierungen verwenden. Du kannst also z.B. eine Series mit Prozentangaben auf die linke Y-Achse legen und eine mit Absolutwerten auf die rechte Y-Achse. Die Einstellungen lassen sich relativ einfach zur Entwurfszeit einstellen (Doppelklick auf das TChart) oder halt zur Laufzeit per Zuweisung der entsprechenden Eigenschaften, z.B:

    //Zuweisung der Series zur rechten oder linken Y-Achse
    Series1->VertAxis = aLeftAxis;
    Series2->VertAxis = aRightAxis;
    
    //Prozentangaben für die rechte Y-Achse
    Chart1->RightAxis->LabelStyle = talValue;
    Chart1->RightAxis->AxisValuesFormat = "  #,##0 % ";
    

Anmelden zum Antworten