Delphi-PRAXiS

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 Achseneinteilung bei TChart, Max wird nicht aktualisiert (https://www.delphipraxis.net/104622-achseneinteilung-bei-tchart-max-wird-nicht-aktualisiert.html)

HappyJoe 7. Dez 2007 16:21


Achseneinteilung bei TChart, Max wird nicht aktualisiert
 
Hallo zusammen,

wenn ich in einem TChart z.B. für jeden Monat die Umsatzzahlen als Säule darstelle, ist noch alles okay. Möchte ich jedoch anschließend die prozentuale Verteilung darstellen, bleibt die Achseneinteilung gleich, sie geht also weiterhin bis z.B. 100000 und nicht wie für Prozentzahlen sinnvoll bis max. 100. Ein Setzen von LeftAxis.Automatic auf false bringt eben so wenig, als wenn ich Maximum und Minimum setze.

Vielleicht liegt mein Fehler hier: Ich stelle die Zahlen so dar:

Delphi-Quellcode:
For Monat := 1 to 12 do
  Serie1.Add (Umsatz [Monat], IntToStr (Monat), clRed);
Wenn ich nun zu Prozenten umschalte, lösche ich die Umsatzwerte mit

Delphi-Quellcode:
while Serie1.Count > 0 do
  Serie1.XValues.Delete (0);
um dann die Prozentwerte mit Add (wie oben, nur max. bis 100%) wieder einzufügen.

Hat jemand eine Idee, warum die neuen Min und Max-Werte nicht aktualisiert werden?

Gruß
Joe

mkinzler 7. Dez 2007 16:30

Re: Achseneinteilung bei TChart, Max wird nicht aktualisiert
 
Erzeuge mal ne neue Serie.

Poolspieler 7. Dez 2007 16:57

Re: Achseneinteilung bei TChart, Max wird nicht aktualisiert
 
Hi,
folgender Code funktioniert bei mir bestens:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Series1.Clear;
{  Chart1.LeftAxis.Automatic := false;
  Chart1.LeftAxis.Maximum := 10000;
  Chart1.LeftAxis.Minimum := 20;}
  Chart1.LeftAxis.Automatic := true;
  series1.Add(50, 'Januar', clRed);
  series1.Add(100, 'Februar', clRed);
  series1.Add(1000, 'März', clRed);
  series1.Add(5000, 'April', clRed);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Series1.Clear;
  Chart1.LeftAxis.Automatic := false;
  Chart1.LeftAxis.Maximum := 100;
  Chart1.LeftAxis.Minimum := 0;
  series1.Add(5, 'Januar', clRed);
  series1.Add(10, 'Februar', clRed);
  series1.Add(20, 'März', clRed);
  series1.Add(50, 'April', clRed);

end;

Du solltest eine Series mit series.clear; leeren.
Wenn Du das Maximum oder Minimum ändern willst, dann MUSST Du auch Automatic=false setzten...

Gruß und viel Spaß noch,
Poolspieler

HappyJoe 7. Dez 2007 17:18

Re: Achseneinteilung bei TChart, Max wird nicht aktualisiert
 
@mkinzler
Glaubst du, ich habe mir schon den ganzen Tag den Kopf darüber zerbrochen, aber dass die Lösung so einfach ist....
Es hat natürlich geklappt - DANKE!!!

@Poolspieler
Auch dir vielen Dank für die schnelle Hilfe. Ich habe deinen Code eben auch noch ausprobiert und siehe da, er hat auch gefunzt. Irgendwie hatte ich heute wohl keinen guten Tag...

Also nochmals vielen DANK euch beiden.
Gruß Joe


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.

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