![]() |
tLineseries in tChart einzelne Punkte markieren
Ich benutze Delphi XE4 Pro.
Ich habe ein Chart mit Lineseries. Ich möchte an einzelnen Punkten der Linie einen Markierungstext anbringen. Wenn ich bei den ausgewählten Punkten Addxy(x,y,Label) mit drei parametern benutze, bleibt das Label unsichtbar. Erst wenn ich marks=visible setze werden Labels sichtbar, aber leider an allen Punkten. Ich habe schon versucht, zusätzlich eine PointSeries hinzuzuführen. Leider versucht diese, die angegebenen Labels auf die x-achse zu schreiben und die normale Skalierung der lineseries zu löschen. Muss ich die labels händisch auf canvas zeichnen? |
AW: tLineseries in tChart einzelne Punkte markieren
Liste der Anhänge anzeigen (Anzahl: 1)
Der Trick ist das
Delphi-Quellcode:
-Event der
OnGetMarkText
Delphi-Quellcode:
! Dort legst du den Text für das Mark fest. Soll es nicht zu sehen sein, nimmst du einfach einen leeren String:
TLineSeries
Delphi-Quellcode:
Ergebnis im Anhang.
procedure TForm1.Series1GetMarkText(
Sender: TChartSeries; ValueIndex: Integer; var MarkText: string ); begin case ValueIndex of 5: MarkText := 'Hallo'; 12: MarkText := 'Welt'; 19: MarkText := 'Bohnen und Speck'; else MarkText := EmptyStr; end; end; |
AW: tLineseries in tChart einzelne Punkte markieren
Vielen Dank für die Antwort,
Damit damit etwas passiert, d.h. damit OnGetMarkText aufgerufen wird, muss ich wohl Marks.Visible:=true; setzen. Dann verschwindet aber die Skalierung der x-Achse vollständig und statt dessen werden von jeder sichtbaren Markierung gestrichelte Linien zur x-achse gezeichnet und dort wird der Mark Text auch nochmal eingezeichnet. Ich möchte aber meine normale x-Achsen Skalierung beibehalten. Geht das? |
AW: tLineseries in tChart einzelne Punkte markieren
Zitat:
Skalierung? Kannst du ein konkretes Mini-Beispiel einstellen? Das was du unten auf der X-Achse an Beschriftung hast sind "Labels" die du ja (im ersten Beitrag) auch explizit selbst so hinzugefügt hast. Die normale Beschriftung sind auch "Labels", nur da gleicht das Label eben dem X-Wert (wenn du nichts angegeben hast). "Labels" und "Marks" sind zwei vollkommen verschiedene paar Schuhe: "Marks" sind die schwebenden Schildchen im Graphen, "Labels" sind das, womit die Achsen beschriftet werden (Das nennst du "Skalierung", oder?) |
AW: tLineseries in tChart einzelne Punkte markieren
Ich habe jetzt noch weiter rumprobiert.
Die skalierung der x-achse verschwindet wohl (für mich unverständlich), sobald ich zu einer Lineseries .addxy mit einem dritten(Label) Parameter aufrufe. Den label Parameter in AddXY hätte ich gerne benutzt, weil ich im Moment, wo ich AddXY aufrufe, den benötigten Label/Mark-Text kenne. Wenn später OnGetMarkText aufgerufen wird, ist diese Information schlecht zu rekonstruieren. Ich habe das Problem jetzt dadurch (schlecht) gelöst, dass ich zu jeder Lineseries, die ich in dem Diagramm zeichne, noch zusätzlich eine Liste mit den Label/Mark-Texten anlege. Aus diesen Listen hole ich mir dann in OnGetMarkText den MarkText. Das funktioniert jetzt zwar einwandfrei, aber geht das nicht einfacher? Kann man das Verschwinden der x-Achsen-Skalierung nicht verhindern? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 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