Wie ändert man die Linienfarbe in der Diagrammlegende ?



  • Hallo Leute,

    ich benutze TeeChart Pro 4.02 in BCB 5.o Pro, und
    schaffe es nicht die Linienfarbe der einzelnen Series
    in Diagrammlegende manuell zu ändern.

    Mit der Linienfarbe meine ich die Farbe des
    Striches vor der Seriesbezeichnung:

    -- Series 1
    -- Series 2

    Ich meine jetzt die Farbe von diesem Strich : "--"

    Hat das jemand von euch schon mal gemacht?

    Vielend Dank im Voraus.



  • du mußt doch nur die Farbe der Series ändern

    Series1->Color = clBlue;
    


  • Das Problem ist, dass ich die Datenreihen erst zur Laufzeit
    erstelle.
    Deswegen habe ich schon versucht die Farbe folgendermaßen zu
    setzen

    Chart1->Series[2]->Color = clBlue;
    

    Da meckert aber der Compiler, und sagt:

    "Color" ist kein Element von TChartSeries 😕



  • Also normalerweise geht das, allerdings habe ich eine etwas neuere Version von TeeChart.

    Wobei es auch zu der Version die du verwendest eine Hilfe gibt, die ist über das Startmenü oder über den Hilfe-Button im TChart zur Entwurfszeit zu erreichen. Die Hilfe ist zwar meist in Pascal/Delphi aber das ändert ja an den eigentlichen Eigenschaften und Methoden nichts. Außerdem sollte auch die Codevervollständigung die notwendigen Informationen liefern.



  • Wie erstellst Du denn die Serien und welche Art-Serien sind das?
    Der Code muss in jedem Fall gehen:

    TLineSeries* V_Series;
              V_Series = new TLineSeries(Chart1);
              V_Series->Color=clBlue;
              V_Series->Name= "Series_1";
    
              //Werte eingeben
              V_Series->AddXY(...werte);
              Chart1->AddSeries(V_Series);
    

    Button 2 macht die Serie rot und auch die Anzeige vor dem Seriennamen.

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
              Chart1->Series[0]->Color=clRed;
    }
    

    Gruß myerscola



  • ich danke euch erstmal für die schnellen Antworten.

    Nach einigen Versuchen habe ich es doch rausbekommen:

    Chart1->Series[0]->SeriesColor = clBlue;
    

    Dadurch ändert sich aber nur die Farbe des Striches in der Legende.
    Um die Farbe der Datenreihe im Diagramm nachträglich zu ändern muss man die neue
    Farbe jedem Datenpunkt manuell zuweisen:

    for(count = 0; count < int_Anzahl_Datenpunkte; count ++)
    {
     // Die Farbe des Datenpunktes ändern
     Chart1->Series[0]->ValueColor[count] = clBlue;
    }
    


  • Hallo,

    Dieses Verhalten hat man eigentlich nur dann, wenn ColorEachPoint auf true steht. Ansonsten kann man schon die ganze Serie mit SeriesColor färben.



  • das Verhalten kann gar nicht sein, mit der Schleife

    for(count = 0; count < int_Anzahl_Datenpunkte; count ++)
    {
     // Die Farbe des Datenpunktes ändern
     Chart1->Series[0]->ValueColor[count] = clBlue;
    }
    

    änderst Du ganz sicher nicht die Linie im Diagramm sondern die Farbe in der Legende und auch nur dann wenn Du jeden Wert und nicht die Serien in der Legende anzeigst. Die Linie änderst Du auch nur einzeln wie Braunstein schreibt bei ColorEachPoint=true und dann sieht die Schleife so aus:

    for(int count = 0; count < Chart1->Series[0]->Count(); count ++)
    {
     // Die Farbe des Datenpunktes ändern
     Chart1->Series[0]->ColorEachPoint = clGreen;
    }
    

    Gruß myerscola



  • Das scheint auch zu funktionieren. Wieder was dazu gelernt.
    Vielen Dank.


Log in to reply