TaChart und Legende

Rund um die LCL und andere Komponenten
Antworten
twbonn
Beiträge: 6
Registriert: Do 23. Mai 2019, 10:23

TaChart und Legende

Beitrag von twbonn »

Erstmal freue ich mich, dass es andlich mit der Registrierung und Freischaltung geklappt hat. Bisher habe ich schon manch hilfreiches hier gelesen und umgesetzt.Jetzt kommt meine erste Frage:

Ich entwickele eine messtechnische Software weiter, die ihre Ursprünge zu MSDOS-Zeiten hat. Dazu braucht es natürlich TACharts.
Was ich nun möchte, ist die einzelnen Lineseries mit mit verschiedenen Bezeichnungen versehen, z.B. "MessKanal_U3.1" und "Spannung über den Kontakten".
Was ich nicht möchte, ist direkt auf den Chart-Canvas zu schreiben .

Wie gehe ich am geschicktesten vor ?

fragt
Thomas

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TaChart und Legende

Beitrag von af0815 »

Nach dem Studium der Wiki https://wiki.freepascal.org/TAChart/de, besser ist die enlische Seite https://wiki.freepascal.org/TAChart - werden die meisten Fragen beantwortet sein.

Bei Lazarus ist auch ein eigener Example folder mit vielen Beispielen dabei. Das ist über das Tools Menü erreichbar. Dort unter Projects einfach Chart eingeben und du bekommst jede Menge an Beispielen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TaChart und Legende

Beitrag von wp_xyz »

Normalerweise schreibt man diese Information in die Legende. Dazu hat jede Series eine Eigenschaft "Title" - das ist der Text, der in der Legende für die Kurve erscheinen soll. Wenn jetzt noch im Chart Legend.Visible auf true gesetzt ist, erscheint die Legende automatisch. Sie kann mit Chart.Legend.Alignment grob platziert werden. Zur feineren Positionierung gibt es noch Chart.Legend.MarginX und .MarginY. Sowie .UseSideBar, ob die Legende außerhalb (true) oder innerhalb (false) der Plot-Fläche gezeichnet werden soll.

Evtl willst du auch im Chart neben der Series einen Text zeigen, der die Kurve kennzeichnet. Freie Positionierung von Texten innerhalb des Charts wird zwar nicht unterstützt, aber der Text sollte ja eher nicht frei positioniert sein, sondern mit den Datenpunkten verbunden sein. Für die Beschriftung von Datenpunkten hält TAChart im Datenrecord auch ein Text-Feld vor. Du könntest ein DataPointClickTool verwenden - dadurch wird ein Klick auf dem Datenpunkt, der mit dem Kurvennamen beschriftet werden soll, erkannt. In dem Ereignis OnPointClick durchläufst du dann alle Datenpunkte der Series, leerst die Beschriftungsfelder bis auf den einen geklickten Datenpunkt, bei dem das Beschriftungsfeld im Datenrecord auf den Title der Series gesetzt wird. Damit die Datenpunktbeschriftung angezeigt wird, musst du noch die Eigenschaft (Series).Marks.Style auf smsLabel setzen.

Schau dir das beigefügte Beispielprogramm an - dort wird das alles durchexerziert. Über die ChartTools gibt es mehrere Tutorials im wiki (z.B. https://wiki.lazarus.freepascal.org/TAC ... hart_Tools).
Dateianhänge
series_labeler.png
SeriesLabeler.zip
(2.69 KiB) 88-mal heruntergeladen

twbonn
Beiträge: 6
Registriert: Do 23. Mai 2019, 10:23

Re: TaChart und Legende

Beitrag von twbonn »

.. ihr seid ja schnell ...

Ich habe mein Problem mit der Bennenung von physikalischem und logischen Kanal jetzt so gelöst, dass ich die "physikalische" Bezeichnung in FCharts[i].LeftAxis.Title.Caption packe und die "logische" Bezeichnung in LineSeries.Title, die über Legend.visible eingeblendet und über Legend.UseSideBar,Legend.Margin, etc. positioniert werden.

ChartToolsets benutze ich reichlich und gerne; auch die ChartNavScrollBar finde ich sehr hilfreich :-)

Grüße aus Bonn
Thomas

Antworten