Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TChart richtig beschriften (https://www.delphipraxis.net/128351-tchart-richtig-beschriften.html)

Hansa 28. Jan 2009 13:21


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:
Feb.
1,62
0,00
Preisfrage ist, wo kann man das einstellen ? :shock:

guinnes 28. Jan 2009 13:34

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

Hansa 28. Jan 2009 13:55

Re: TChart richtig beschriften
 
Gelber Kreis : erledigt, Thx, Guiness.

Zu dem anderen :

Delphi-Quellcode:
procedure TfrmLinieChart.chStatGetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
  inherited;
LabelText := 'ASADF'
end;
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:

guinnes 28. Jan 2009 14:10

Re: TChart richtig beschriften
 
Zitat:

Zitat von Hansa
Dann sind auch die Y-Achsenbeschriftungen betroffen. Wie halte ich denn die auseinander ?

Der Sender sagt dir, welche der ( theoretisch seehr vielen ) Axis jetzt gemeint ist :
Delphi-Quellcode:
if Sender = DBChart1.BottomAxis then
begin
Zitat:

Wofür steht Labelindex ?
LabelIndex hab ich gar nicht, ValueIndex zeigt auf das X/Y-Werte-Paar, für das nun die Achsenbeschriftung gesucht wird
( 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

Hansa 28. Jan 2009 15:05

Re: TChart richtig beschriften
 
Uff, wird mühsamer als gedacht. Da geht fast nix. :mrgreen:

Delphi-Quellcode:
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;
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" ?

guinnes 28. Jan 2009 15:24

Re: TChart richtig beschriften
 
Zitat:

Zitat von Hansa
Uff, wird mühsamer als gedacht. Da geht fast nix. :mrgreen:

Delphi-Quellcode:
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;
Sender =, nicht is

Zitat:

Ja, ValueIndex war gemeint und das steht immer auf -1.
bei mir auch, ich hatte gehofft, das wäre in der " Normalen " Version nicht so ( Ich benutze TeeChart Prof. )
Zitat:

Und zu guter Letzt : wozu und was macht der Parameter "Series" ?
das sollte die Serie sein, aus der du die X/Y-Paare auslesen kannst. Wird möglicherweise nur gefüllt, wenn du bestimmte Serien mit bestimmten Achsen verbindest.
Hast du dir mal die Demos angesehen ?

Hansa 28. Jan 2009 18:05

Re: TChart richtig beschriften
 
Bis hierher geht alles :

Delphi-Quellcode:
procedure TfrmLinieChart.chStatGetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
  inherited;
  if Sender = chStat.BottomAxis then begin
    LabelText := 'ASADF';
  end;
end;
D.h. die X-Achse ist mit dem Labeltext beschriftet. Aber eben alle Werte. In der Hilfe steht nun dazu :

Zitat:

Deklaration

property OnGetAxisLabel: TAxisOnGetLabel;

Beschreibung

Für jede angezeigte Achsenbeschriftung wird ein Ereignis ausgelöst. Es gibt zwei verschiedene Einsatzmöglichkeiten für OnGetAxisLabel:
1) Achsenbeschriftungen entsprechen Werten. In diesem Fall ist der Parameter Series Nil und der ValueIndex ist -1.
2) Achsenbeschriftungen entsprechen Reihenpunkten. Der Parameter Series entspricht einer zulässigen TChartSeries und der ValueIndex der aktuellen Reihenpunktposition. Sie können den für LabelText verwendeten Parameter ändern, um eine andere Achsenbeschriftung anzuzeigen.
Bei mir ist ja auch alles -1. Ich benutze also 1) Wo und wie kommt nun der Parameter Series ins Spiel ? Bei den Demos finde ich nichts passendes.

guinnes 28. Jan 2009 18:21

Re: TChart richtig beschriften
 
Zitat:

Zitat von Hansa
Aber eben alle Werte.

Das sollte dich bei dem Quelltext auch nicht wundern.
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

guinnes 29. Jan 2009 08:36

Re: TChart richtig beschriften
 
Stell Chartxx.BottomAxis.LabelStyle auf talText, dann werden Series und ValueIndex richtig gefüllt

Hansa 29. Jan 2009 14:56

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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz