AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi tLineseries in tChart einzelne Punkte markieren
Thema durchsuchen
Ansicht
Themen-Optionen

tLineseries in tChart einzelne Punkte markieren

Ein Thema von olaf43 · begonnen am 30. Okt 2013 · letzter Beitrag vom 22. Jan 2014
Antwort Antwort
olaf43

Registriert seit: 2. Dez 2010
9 Beiträge
 
#1

tLineseries in tChart einzelne Punkte markieren

  Alt 30. Okt 2013, 17:58
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?
Wichard
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: tLineseries in tChart einzelne Punkte markieren

  Alt 30. Okt 2013, 19:35
Der Trick ist das OnGetMarkText -Event der TLineSeries ! Dort legst du den Text für das Mark fest. Soll es nicht zu sehen sein, nimmst du einfach einen leeren String:

Delphi-Quellcode:
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;
Ergebnis im Anhang.
Miniaturansicht angehängter Grafiken
bohnen-und-speck.png  
  Mit Zitat antworten Zitat
olaf43

Registriert seit: 2. Dez 2010
9 Beiträge
 
#3

AW: tLineseries in tChart einzelne Punkte markieren

  Alt 22. Jan 2014, 14:44
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?
Wichard
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: tLineseries in tChart einzelne Punkte markieren

  Alt 22. Jan 2014, 14:53
Damit damit etwas passiert [...] muss ich wohl Marks.Visible:=true;
setzen.
Richtig.

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?)
  Mit Zitat antworten Zitat
olaf43

Registriert seit: 2. Dez 2010
9 Beiträge
 
#5

AW: tLineseries in tChart einzelne Punkte markieren

  Alt 22. Jan 2014, 15:50
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?
Wichard
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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