TChart - Klick auf Kurven Bezeichner? [gelöst ab Laz 2.3.0]
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
TChart - Klick auf Kurven Bezeichner? [gelöst ab Laz 2.3.0]
Hallo,
Ich möchte gerne bei einem Doppelklick bei einer der Legenden für die Kurven heraus bekommen zu welcher Kurve der Benutzer Doppelklick ausgeführt hat, so dass ich den entsprechenden Datensatz zeigen kann.
Ich habe einige Beispiele gefunden wie man Punkt aus der Kurve anklicken kann, aber nicht ein Klick auf die Legende der Kurven.
Hier im Bild sind 6 Kurven drin, da ist unten die Legende: Hat jemand noch eine Idee wie man da heraus bekommen kann wo geklickt wurde?
Die einzelnen Kurven werden über TLineSeries aufgebaut, ein "OnLegendeClick" oder so gibt es nicht. Ich habe auch nichts gefunden wie ich anhand der Mausposition den Legenden-Text herausfinden kann. Jedenfalls kann ich mit TLineSeries.Tag die ID des Datensatzes mir merken, wenn ich irgendwie die TLieSeries heraus bekomme, dann hätte ich schon alles.
Das TChart ist so ein umfangreiches Tool, ich bin mir sicher dass es geht, ich weiß nur noch nicht wie.
Ich habe auch versucht eine "TChartListbox" ein zu fügen, aber da ich die Kurven doppeln muss damit die Preis Texte immer oben stehen und nicht von anderen Kurven übermalt werden, werden in der "TChartListbox" die doppelte Kurven mit gezeigt. "TChartListbox" beachtet weder TLineSeries.Legend.Visible := False; noch TLineSeries.ShowInLegend := False;. Sonst habe ich auch hier keine Möglichkeit gefunden die doppelte Kurven nicht in TChartListbox zu zeigen: Vielen Dank für die Hilfe
Grüße Markus
Ich möchte gerne bei einem Doppelklick bei einer der Legenden für die Kurven heraus bekommen zu welcher Kurve der Benutzer Doppelklick ausgeführt hat, so dass ich den entsprechenden Datensatz zeigen kann.
Ich habe einige Beispiele gefunden wie man Punkt aus der Kurve anklicken kann, aber nicht ein Klick auf die Legende der Kurven.
Hier im Bild sind 6 Kurven drin, da ist unten die Legende: Hat jemand noch eine Idee wie man da heraus bekommen kann wo geklickt wurde?
Die einzelnen Kurven werden über TLineSeries aufgebaut, ein "OnLegendeClick" oder so gibt es nicht. Ich habe auch nichts gefunden wie ich anhand der Mausposition den Legenden-Text herausfinden kann. Jedenfalls kann ich mit TLineSeries.Tag die ID des Datensatzes mir merken, wenn ich irgendwie die TLieSeries heraus bekomme, dann hätte ich schon alles.
Das TChart ist so ein umfangreiches Tool, ich bin mir sicher dass es geht, ich weiß nur noch nicht wie.
Ich habe auch versucht eine "TChartListbox" ein zu fügen, aber da ich die Kurven doppeln muss damit die Preis Texte immer oben stehen und nicht von anderen Kurven übermalt werden, werden in der "TChartListbox" die doppelte Kurven mit gezeigt. "TChartListbox" beachtet weder TLineSeries.Legend.Visible := False; noch TLineSeries.ShowInLegend := False;. Sonst habe ich auch hier keine Möglichkeit gefunden die doppelte Kurven nicht in TChartListbox zu zeigen: Vielen Dank für die Hilfe
Grüße Markus
Zuletzt geändert von MmVisual am So 24. Okt 2021, 10:59, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: TChart - Klick auf Kurven Bezeichner?
Hi!
Du hast Recht: Es gibt nahezu alles bei TChart.
Du brauchst das Legend Click Tool:
https://wiki.lazarus.freepascal.org/TAC ... click_tool
Winni
PS.: Ich weiß: Dokumentationen lesen ist feige. Aber manchmal hilft es.
Du hast Recht: Es gibt nahezu alles bei TChart.
Du brauchst das Legend Click Tool:
https://wiki.lazarus.freepascal.org/TAC ... click_tool
Winni
PS.: Ich weiß: Dokumentationen lesen ist feige. Aber manchmal hilft es.
Re: TChart - Klick auf Kurven Bezeichner?
Es gibt zwar in Laz 2.2RC1 ein TLegendClickTool, aber das detektiert nur einen Klick auf der Legende pauschal, nicht aber, auf welcher Series geklickt wurde. (wäre eine gute Idee, das zu ergänzen... Mache einen Feature Request, damit ich das nicht vergesse)MmVisual hat geschrieben: Fr 22. Okt 2021, 14:55 Ich habe einige Beispiele gefunden wie man Punkt aus der Kurve anklicken kann, aber nicht ein Klick auf die Legende der Kurven.
Hier im Bild sind 6 Kurven drin, da ist unten die Legende:
[...]
Ich habe auch versucht eine "TChartListbox" ein zu fügen, aber da ich die Kurven doppeln muss damit die Preis Texte immer oben stehen und nicht von anderen Kurven übermalt werden, werden in der "TChartListbox" die doppelte Kurven mit gezeigt. "TChartListbox" beachtet weder TLineSeries.Legend.Visible := False; noch TLineSeries.ShowInLegend := False;. Sonst habe ich auch hier keine Möglichkeit gefunden die doppelte Kurven nicht in TChartListbox zu zeigen:
TChartListbox ist trotz deiner Vorbehalte z.Z. die Komponente der Wahl. Diese Listbox baut sich völlig unabhängig von der Legende auf und irgnoriert auch die in der Series für den Legenden-Auftritt vorgesehenen Properties. Immer dann, wenn die Legende neu aufgebaut wird, wird für jede Series das Ereignis OnAddSeries generiert, in dem du mit dem boolschen Parameter ASkip festlegen kannst, ob die Series weggelassen werden soll.
Code: Alles auswählen
procedure TForm1.ChartListbox1AddSeries(ASender: TChartListbox;
ASeries: TCustomChartSeries; AItems: TChartLegendItems; var ASkip: Boolean);
begin
if ASeries = LineSeries1 then ASkip := true;
end;
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TChart - Klick auf Kurven Bezeichner?
Dankeschön für die Infos.
Ich habe das mit der "TChartListbox" gelöst.
Per default ist die ItemHeight zu klein ich habe das so korrigiert:
Das Skip habe ich so gelöst, es übernimmt die Eigenschaft aus der Kurve:
Mit Doubleklick hol ich mir so das Item:
So funktioniert das ganz gut
Viele Grüße Markus
Ich habe das mit der "TChartListbox" gelöst.
Per default ist die ItemHeight zu klein ich habe das so korrigiert:
Code: Alles auswählen
TChartListbox.ItemHeight := TChartListbox.Canvas.TextHeight('Hj') + 6;
Code: Alles auswählen
Procedure TfrmChart.chrtListAddSeries(ASender: TChartListbox;
ASeries: TCustomChartSeries; AItems: TChartLegendItems; Var ASkip: Boolean);
Begin
ASkip := Not ASeries.Legend.Visible;
end;
Mit Doubleklick hol ich mir so das Item:
Code: Alles auswählen
Procedure TfrmChart.chrtListDblClick(Sender: TObject);
Var i: Integer;
Begin
i := chrtList.GetIndexAtY(chrtList.ScreenToClient(Mouse.CursorPos).Y);
If i >= 0 Then
iSelID := Chart.Series[i].Tag;
end;

Viele Grüße Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TChart - Klick auf Kurven Bezeichner?
Das was mir nun aufgefallen ist, Bugs und Features habe ich hier in der Bugtracker geschrieben.
https://gitlab.com/freepascal.org/lazar ... sues/39437
https://gitlab.com/freepascal.org/lazar ... sues/39438
https://gitlab.com/freepascal.org/lazar ... sues/39439
https://gitlab.com/freepascal.org/lazar ... sues/39440
Ich habe mal alles einzeln geschrieben, damit man das besser fixen und testen kann.
Viele Grüße Markus.
https://gitlab.com/freepascal.org/lazar ... sues/39437
https://gitlab.com/freepascal.org/lazar ... sues/39438
https://gitlab.com/freepascal.org/lazar ... sues/39439
https://gitlab.com/freepascal.org/lazar ... sues/39440
Ich habe mal alles einzeln geschrieben, damit man das besser fixen und testen kann.
Viele Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: TChart - Klick auf Kurven Bezeichner?
Hierzu hat das TLegendClickTool nun ein Event OnSeriesClick bekommen. das erzeugt wird, wenn man auf einem Legendeneintrag klickt und dieser mit einer Series verbunden ist. Ob das ein einfacher oder ein Doppelklick sein muss, kann man mit Hilfe der Shift-Eigenschaft des LegendClickTools festlegen. Ich habe vorerst ein kleines Testprogramm an den Bug-Report angefügt, das ich wahrscheinlich aber auch in die TAChart-Demos übernehmen werde.MmVisual hat geschrieben: Fr 22. Okt 2021, 18:27 https://gitlab.com/freepascal.org/lazar ... sues/39437
Achtung: Das ganze setzt natürlich Lazarus-main voraus, und wird als neues Feature auch nicht in die v2.2 aufgenommen werden.
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TChart - Klick auf Kurven Bezeichner?
Ich kann das Demo nicht öffnen, das "TLegendClickTool" ist bei mir nicht installiert. Also es fehlt im "Normalen" Setup von Lazarus Setup V2.0.12.
Welches Paket muss ich da dazu installieren?
Daher hatte ich auch die Infos von hier:
https://wiki.lazarus.freepascal.org/TAC ... click_tool
nicht wirklich verwenden können, da könnte man vielleicht noch dazu schreiben was man noch dazu installieren muss damit das funktioniert was in der Doku steht.
Viele Grüße Markus
Welches Paket muss ich da dazu installieren?
Daher hatte ich auch die Infos von hier:
https://wiki.lazarus.freepascal.org/TAC ... click_tool
nicht wirklich verwenden können, da könnte man vielleicht noch dazu schreiben was man noch dazu installieren muss damit das funktioniert was in der Doku steht.
Viele Grüße Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: TChart - Klick auf Kurven Bezeichner?
Steht in meinem Post: du brauchst Laz-main.
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TChart - Klick auf Kurven Bezeichner?
Das finde ich auch nicht. Weder in
Package > Installierte Packages einrichten
Da kann ich das nicht hinzufügen
Noch im OPM, da gibt es auch kein "Laz-Main".
Ich versuche gerade über FpcUpDeluxe das Lazarus "Trunk" zu installieren, dauert eine weile, vielleicht ist es da dabei.
Package > Installierte Packages einrichten
Da kann ich das nicht hinzufügen
Noch im OPM, da gibt es auch kein "Laz-Main".
Ich versuche gerade über FpcUpDeluxe das Lazarus "Trunk" zu installieren, dauert eine weile, vielleicht ist es da dabei.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TChart - Klick auf Kurven Bezeichner?
Im neuen Lazarus (Trunk von gerade eben) ist das drin, dankeschön.
ChartToolset1LegendClickTool1.Shift := [ssLeft] >>> funktioniert
ChartToolset1LegendClickTool1.Shift := [ssDouble] >>> funktioniert noch nicht.
ChartToolset1LegendClickTool1.Shift := [ssLeft] >>> funktioniert
ChartToolset1LegendClickTool1.Shift := [ssDouble] >>> funktioniert noch nicht.
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: TChart - Klick auf Kurven Bezeichner?
Müsste jetzt gehen...
Die anderen gemeldeten Bugs zur ChartListbox habe ich auch behoben (ebenfalls in Laz-main/trunk).
Sorry wegen "Laz-main": nach dem Umzug auf GitLab wird die Entwicklungsversion von Lazarus nicht mehr als "trunk" sondern als "main" bezeichnet.
Die anderen gemeldeten Bugs zur ChartListbox habe ich auch behoben (ebenfalls in Laz-main/trunk).
Sorry wegen "Laz-main": nach dem Umzug auf GitLab wird die Entwicklungsversion von Lazarus nicht mehr als "trunk" sondern als "main" bezeichnet.
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TChart - Klick auf Kurven Bezeichner?
Hab das Laz-Main mit FPCUpDeluxe aktualisiert,
ChartToolset1LegendClickTool1.Shift := [ssDouble]
geht noch nicht.
ChartToolset1LegendClickTool1.Shift := [ssDouble]
geht noch nicht.
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: TChart - Klick auf Kurven Bezeichner?
Doch: ChartToolset1LegendClickTool1.Shift := [ssLeft, ssDouble], denn das Tool muss wissen, welche Maustaste geklickt wird.MmVisual hat geschrieben: So 24. Okt 2021, 00:23 ChartToolset1LegendClickTool1.Shift := [ssDouble]
geht noch nicht.
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TChart - Klick auf Kurven Bezeichner?
Ja, Stimmt, so geht das richtig.
Gestern Nacht war ich schon zu müde dafür...
Dankeschön, Viele Grüße Markus
Gestern Nacht war ich schon zu müde dafür...
Dankeschön, Viele Grüße Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de