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/)
-   -   TChart X-Achsen Label Problem (https://www.delphipraxis.net/205656-tchart-x-achsen-label-problem.html)

TurboMagic 2. Okt 2020 09:48

TChart X-Achsen Label Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe ein Chart dass über die Zeit Messpunkte aufzeichnen soll.
Habe ich nur eine Kurve drin ist alles schön, füge ich später eine zweite Kurve
hinzu gibt es teilweise überlappende X-Achsen Labels, siehe Anhang.

Die X-Achse ist der Zeitstempel und die Messdaten der Kurven kommen zu unterschiedlichen
Zeitpunkten einzeln rein.

Ich habe jetzt versucht über das Increment der X-Achse nur jede Sekunde ein Label zu haben,
das macht er aber irgendwie nicht.

Ich nutze D10.3.3 und das dort enthaltene TChart.

Hier der Code zum Hinzufügen einer Achse:

Delphi-Quellcode:
function TScopeLogic.CreateSeries(SeriesName:string): TFastLineSeries;
begin
  result                 := TFastLineSeries.Create(FChart);

  result.ParentChart     := FChart;
  result.Title           := SeriesName;
  result.Visible         := true;
  result.Pen.Width       := 2;
  result.Active          := true;
  result.ShowInLegend    := true;
  result.XValues.DateTime := true;
  result.CustomHorizAxis := FChart.BottomAxis;
  result.CustomHorizAxis.Increment := DateTimeStep[dtOneSecond];
end;
Und hier das Hinzufügen eines Wertes, wobei RecValue ein Single mit
dem eingelesenem Messwert ist:

Delphi-Quellcode:
Series.AddXY(now, RecValue, DateTimeToStr(now));
Was mache ich falsch?

Der schöne Günther 2. Okt 2020 10:17

AW: TChart X-Achsen Label Problem
 
Lass doch den dritten Parameter, die explizite Achsenbeschriftung, mal weg.

Delphi.Narium 2. Okt 2020 10:19

AW: TChart X-Achsen Label Problem
 
Oder ihn nur dann setzen, wenn sich die Zeit geändert hat. Das hieße: Nur der erste Eintrag zu einer Sekunde wird "belabelt"?

TurboMagic 2. Okt 2020 10:25

AW: TChart X-Achsen Label Problem
 
Hilft leider nicht. Dann werden gar keine X-Achsen Labels mehr angezeigt und wenn ich
die 2. Kurve dann hinzufüge werden deren Y-Werte im Diagramm auch nicht angezeigt,
obwohl die Y-Achse passend skaliert.

Ich habe jetzt auch testweise Automatic der CustomHorizAxis auf true gesetzt.
Ändert daran aber nichts.

=> warum werden ohne Angabe des 3. parameters bei AddXY keine X-Achsen Labels
angezeigt?

TurboMagic 2. Okt 2020 10:26

AW: TChart X-Achsen Label Problem
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1474761)
Oder ihn nur dann setzen, wenn sich die Zeit geändert hat. Das hieße: Nur der erste Eintrag zu einer Sekunde wird "belabelt"?

Die Idee hat einen gewissen Charme!
Fraglich ist nur, ob die automatische Ermittlung von TChart (Zwecks Bildschirmskalierung usw.) da auch mitspielt.
Muss das mal testen, einen ähnlichen Ansatz hatte ich gestern schon mal erfolglos probiert.

TurboMagic 2. Okt 2020 10:31

AW: TChart X-Achsen Label Problem
 
Hm, im ersten Versuch scheint das zu funktionieren...

Der schöne Günther 2. Okt 2020 13:55

AW: TChart X-Achsen Label Problem
 
Du kannst auf der Achse einstellen ob die sich nach explizit vergebenen Labels, automatisch oder sonst was richten soll.

TurboMagic 3. Okt 2020 11:21

AW: TChart X-Achsen Label Problem
 
Weil ich das mit dem Scrollen jetzt nicht richtig hinbekommen habe, habe ich es jetzt ganz anders gelöst.

Ich arbeite wieder mit intern ID basierten Achsen, gebe die Werte mit AddXY aus und habe meinen eigenen
Serienübergreifenden MaxX Zähler. Beim Ausgeben gebe ich den aktuellen Zeitstempel mit aus, habe jetzt aber
das Event gefunden, welches beim Zeichnen dieser Achsen Label aufgerufen wird und dort setze ich den
auszugebenden Text auf Leer wenn das Event für die horizontale Achse aber nicht die erste Serie meiner
eigenen Serienliste (ich brauche da weitere Infos daher eigene Liste) ist. Denn die erste Serie in meiner
Liste ist immer die am längsten laufende.

Dadurch funktioniert das Scrollen sauber und es werden auch keine X-Achsen Labels übereinander gezeichnet.
Was noch nicht ganz richtig funktioniert ist das manuelle Scrollen mit dem von mir hinzugefügten Scrollbar,
da ist aber evtl. noch ein Programmierfehler drin der dafür sorgt, dass trotz maximalem Scrollbar Wert nicht
der aktuellste Teil des CHarts dargestellt wird. Für ältere CHartbereiche funktioniert es aber.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 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