Gesundes Neues noch!
Ich frickel gerade an einem alten Projekt und überarbeite da gerade einen TAChart. Dabei nutze ich eine ChartToolSet und dabei mehrere Tools z.B. ein TPanDragTool und ein TZoomDragTool. Dabei würde ich gern die jeweilige Operation abbrechen, wenn der Nutzer Escape drückt. Laut Doku https://wiki.lazarus.freepascal.org/TAC ... tion#Tools sollte dafür das Property EscapeCancels ("Some tools publish the EscapeCancels property which, if set to true, cancels the tool operation if the user pressed the ESC key") geeignet sein.
Leider funktioniert das hier nicht, Windows 7, Lazarus 2.2.0RC1 r65419 FPC 3.2.2 x86_64-win64-win32/win64.
Gibt es da noch einen Kniff, auf den ich achten muss?
Test mit einem ZoomDragTool anbei.
[gelöst] TAChart TChartToolSet EscapeCancels scheint nicht zu funktionieren
[gelöst] TAChart TChartToolSet EscapeCancels scheint nicht zu funktionieren
- Dateianhänge
-
ChartTest.zip
- (2.02 KiB) 57-mal heruntergeladen
Zuletzt geändert von Michl am Di 4. Jan 2022, 08:22, insgesamt 1-mal geändert.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: TAChart TChartToolSet EscapeCancels scheint nicht zu funktionieren
Damit der Chart die ESC-Taste überhaupt zu sehen bekommt, muss er fokussiert sein. Das kannst du erreichen, indem du im OnAfterMouseDown oder OnBeforeMousedown-Event des ZoomDrag-Tools die Methode aufrufst. Oder noch einfacher: Chart.AutoFocus auf true setzen. Aber das hat den Nachteil, dass ein vor der Tool-Aktion fokussiertes Control den Fokus verliert, wenn du schon allein die Maus über den Chart bewegst. Daher würde ich die Methode mit dem Mouse-Handler bevorzugen.
Siehe auch: https://wiki.lazarus.freepascal.org/TAC ... g_in_tools
Code: Alles auswählen
Chart.SetFocus;
Siehe auch: https://wiki.lazarus.freepascal.org/TAC ... g_in_tools
Re: TAChart TChartToolSet EscapeCancels scheint nicht zu funktionieren
Geht prima. Danke!
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;