Funktion Chart1->BottomAxis->DrawAxisLabel()



  • Ich versuche mit dieser Funktion:

    Chart1->BottomAxis->DrawAxisLabel(int x,int y,int Angle, AnsiString Str);

    Die Labels auf der X - Achse zu beschreiben. Absolut kein Effekt. Ähnlich auf

    internationalen Forums fand ich auch solche Fragen ohne Antwort.

    Weiß jemand wie diese Funktion richtig zu benutzen ist…



  • Ich habe die Lösung gefunden… Intuitive Programmierung hat große Zukunft.
    Morgen werde ich die Lösung vorstellen. Jetzt warte ich auf andere Vorschläge…



  • Ich weiß jetzt nicht genau was Du vorhast. Wenn Du die Punkte z.B eine LineSeries beschriften willst, dann sollte das so gehen:

    for (int i=0;i<Series1->Count();i++)
       {
         int x = Series1->CalcXPos(i);
         int y = Series1->CalcYPos(i);
         Chart1->BottomAxis->DrawAxisLabel(x,y+1,0,"Wert "+IntToStr(i),Shape); //oder 0 wenn kein Shape
       }
    

    Wenn Du die X Axis selber beschriften willst, mußt Du halt die vertikale Position ausprobieren um die normalen Label zu überschreiben und sowas machen:

    for (int i=0;i<Series1->Count();i++)
       {
         int x = Series1->CalcXPos(i);
         Chart1->BottomAxis->DrawAxisLabel(x,Chart1->Height-25,0,"Wert "+IntToStr(i) ,0);
       }
    

    Gruß myerscola



  • Hallo,

    Ich würde dafür eher den OnDrawLabel Event der BottomAxis verwenden.



  • Ich nutze die Funktion auch nur um die Labels mit Werten direkt an der Kurve zu positionieren, für die Achsen gebe ich Dir recht. Er hatte halt speziell nach dieser Funktion gefragt.



  • Vor Chart1->BottomAxis->DrawAxisLabel muss die Funktion Chart1->Update();
    aufgerufen werden:

    Chart1->Update();
    for(i=0;i<X_Punkten;++i)
    Chart1->BottomAxis->DrawAxisLabel(Chart1->BottomAxis->CalcXPosValue(i),Chart1->ChartRect.Bottom+5,90,X_PunktenLabel[i]);

    Warum mache ich so etwas. U.A will ich mit meinen Diagramms Balken zeigen

    deren X-Label bestimmten Bereich darstellen, zum Beispiel Alter:

    bis 30

    30 bis 40

    40 – 50
    …………...

    ab 90

    Dazu brauche ich freien Zugriff auf Labels Name von X-Punkten.

    Im meinem Programm:

    BalkenSeries[i]->AddY(BalkenBundZw[i].WertBereich,
    ZwStr,ColorTab[StandardColor[ZeileColor]]);

    AnsiString ZwStr wird zum Setzen von Label und beschreiben Marks(oben über

    Balken). Eigentlich würde man dafür zwei getrennte Strings brauchen. So könnte

    man volle volle Freiheit genießen. In meinem Fall könnte ich Marks so

    beschreiben: „15% v 130“.Solche Darstellung ist sehr aussagekräftig,

    wenn in einem überprüften Bereich z.B so etwas zu finden:

    „100% v 1“ (eine rauchende Person von Probanden die über 100 Jahre ist und

    nach bestimmte Krankheit gestorben ist…). Auch ein störender Faktor ist das,

    dass bei der Darstellung in %, als ganzen Bereich wird immer Summe von allen

    Y-Werten genommen. Im meinem Fall nehme ich immer das was mich interessiert,

    also z.B. alle Probanden in meinem definierten Bereich.



  • Braunstein schrieb:

    Hallo,

    Ich würde dafür eher den OnDrawLabel Event der BottomAxis verwenden.

    Diese Funktion OnDrawLabel steht bei mir nicht zu Verfügung. Version...


Log in to reply