![]() |
TChart richtig beschriften
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,
um die Frage zu verstehen, muss man sich den Anhang ansehen. Ich will folgendes : Unten in dem rot eingekreisten soll statt der '2', weil es sich um Monat handelt 'Feb.' stehen. Das gelb eingekreiste soll da, wo es jetzt steht, nicht zu sehen sein (das überlappt sich manchmal und man kann dann gar nichts mehr lesen. Stattdessen sollen diese zwei Zahlen immer unterhalb des Monats angezeigt werden. Dort solls dann ungefähr so aussehen :
Delphi-Quellcode:
Preisfrage ist, wo kann man das einstellen ? :shock:
Feb.
1,62 0,00 |
Re: TChart richtig beschriften
Für die gelb eingekreisten :
Seriesxx.Marks.Visible auf false Für den roten Kreis : Chartxx.OnGetAxisLabel bedienen ( Sollte gehen, wenn nicht, Chartxx.BottomAxis.Multiline auf True |
Re: TChart richtig beschriften
Gelber Kreis : erledigt, Thx, Guiness.
Zu dem anderen :
Delphi-Quellcode:
Nur mal kurz so getestet. Dann sind auch die Y-Achsenbeschriftungen betroffen. Wie halte ich denn die auseinander ? Wofür steht Labelindex ? Noch lieber wäre mir, wenn einer mir sagt, wie man die Hilfe dazu bringt, mit TChart zu funktionieren. :mrgreen:
procedure TfrmLinieChart.chStatGetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String); begin inherited; LabelText := 'ASADF' end; |
Re: TChart richtig beschriften
Zitat:
Delphi-Quellcode:
if Sender = DBChart1.BottomAxis then
begin Zitat:
( Die Hilfe ist in der Tat etwas hakelig ) p.s. : Mehrzeilig hab ich noch nicht probiert, sollte aber gehen ( bei den Marks gehts definitiv ) Edit2 : Geht, Zeilentrennzeichen ist #$0D |
Re: TChart richtig beschriften
Uff, wird mühsamer als gedacht. Da geht fast nix. :mrgreen:
Delphi-Quellcode:
Ja, ValueIndex war gemeint und das steht immer auf -1. Bei "Sender is" kann ich angeben was ich will. Compiler machts nicht. Und zu guter Letzt : wozu und was macht der Parameter "Series" ?
procedure TfrmLinieChart.chStatGetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String); begin inherited; ShowMessage(IntToStr(ValueIndex)); if (ValueIndex MOD 2 = 0) then if (Sender is ???) then begin LabelText := 'ASADF' end; end; |
Re: TChart richtig beschriften
Zitat:
Delphi-Quellcode:
Sender =, nicht is
procedure TForm1.ChartGetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String); begin if Sender = Chart.BottomAxis then begin LabelText := LabelText + #$0D + 'Unten' + #$0D + 'Zeile3'; end; end; Zitat:
Zitat:
Hast du dir mal die Demos angesehen ? |
Re: TChart richtig beschriften
Bis hierher geht alles :
Delphi-Quellcode:
D.h. die X-Achse ist mit dem Labeltext beschriftet. Aber eben alle Werte. In der Hilfe steht nun dazu :
procedure TfrmLinieChart.chStatGetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String); begin inherited; if Sender = chStat.BottomAxis then begin LabelText := 'ASADF'; end; end; Zitat:
|
Re: TChart richtig beschriften
Zitat:
Ich habe das Zeug nicht zu Hause, d.h. ich kuck Morgen mal danach ( Ich hab da noch irgendwo die TeeChart-Quäl-Texte :wink: )wie man von 1 nach 2 umschaltet |
Re: TChart richtig beschriften
Stell Chartxx.BottomAxis.LabelStyle auf talText, dann werden Series und ValueIndex richtig gefüllt
|
Re: TChart richtig beschriften
Liste der Anhänge anzeigen (Anzahl: 1)
Aha, das muss man erst mal finden.Nächstes Problem:der Platz unterhalb der Bottomaxis reicht nur für 2 Zeilen.Eventuell werden 5 gebraucht.LabelsMultiline gibts noch, das steuert aber nur, ob #13 oder ein Leerzeichen das Zeilenumbruchzeichen ist. Mit #13 gings ja, sofern mehr Platz da wäre.und da noch ein Schönheitsfehler :die Werte sind zentriert, was bei Zahlen komisch aussieht.
Hier ist noch der Source :
Delphi-Quellcode:
procedure TfrmLinieChart.chStatGetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String); begin inherited; if Sender = chStat.BottomAxis then begin LabelText := MonatStr [ValueIndex + 1]; if ValueIndex mod 2 = 0 then LabelText := LabelText + #13 + IntToStr(ValueIndex+ 100) else LabelText := LabelText + #13 + IntToStr(ValueIndex+1); end; end; |
Re: TChart richtig beschriften
|
Re: TChart richtig beschriften
Zitat:
Delphi-Quellcode:
Eben nicht, das ist es ja. Siehe Anhang. Habe das Chart etwas vergrößert. Erst dann sieht man was von der nächsten Zeile. Sofern allerdings im Labeltext 5 Zeilen gebraucht werden, dann lässt sich das Chart gar nicht so stark vergrößern, dass diese sichtbar würden.
if Sender = chStat.BottomAxis then begin
LabelText := MonatStr [ValueIndex + 1] + #$0D + 'Unten' + #$0D + 'Zeile3'; end; Zitat:
|
Re: TChart richtig beschriften
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Edit : Leerzeichen gehen jetzt doch, warum auch immer, damit kannst du das Problem der Ausrichtung also lösen |
Re: TChart richtig beschriften
War erst bei Buchstabe F im OI. Denselben Effekt hätte erreicht im Foot 5 Leerzeilen einzufügen. :shock: Wahrscheinlich wird dadurch indirekt MarginBottom geändert. Mache das aber dann doch lieber direkt. Wenn man jetzt das Ganze aber in der Praxis sieht : mehrere Zeilen sind ja schön und gut. Nur, welche Zeile gehört zu welcher Kurve ? Da es nur strings sind, kann man die Schriftfarbe ja nicht so einstellen, wie die Farbe der Kurve, oder irgendwie doch ?
|
Re: TChart richtig beschriften
Mehrere Horizontale Skalen erstellen und jeder eine andere Schriftfarbe zuweisen ( Sieht aber nicht so toll aus, weil auch jedes mal die Ticks gezeichnet werden )
Edit : Oder selber zeichnen : Sich jede zu beschriftende Stelle merken und im OnAfterDraw selber die Texte zeichnen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz