Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie kann man Ctrl+Tab "Shortcut" richtig implementieren (VCL/Win32) (https://www.delphipraxis.net/206389-wie-kann-man-ctrl-tab-shortcut-richtig-implementieren-vcl-win32.html)

mael 16. Dez 2020 15:10

Wie kann man Ctrl+Tab "Shortcut" richtig implementieren (VCL/Win32)
 
Normalerweise hat man ja Shortcuts, wie für TAction, die einmal gedrückt sofort ausgelöst werden. Werden Tasten danach weiter gedrückt gehalten, wie etwa, Alt, Strg, Umsch, ist das egal.

Aber wenn man durch verschiedene Dokumente wechseln will mit Ctrl+Tab, macht es einen Unterschied ob man die Ctrl-Taste gedrückt hält oder nicht. Erst wenn man Ctrl loslässt, wird der Fokus final geändert.

Alt+Tab unter Windows zeigt schön wie es funktionieren soll. Erst wenn man Alt loslässt, wird auch das Fenster tatsächlich fokussiert. Bricht man es ab, indem man eine andere Taste drückt, behält das ursprünglich fokussierte Fenster den Fokus.

Gibt es eine Methode wie man solche "komplexen" Shortcuts implementieren kann?

Aviator 16. Dez 2020 15:37

AW: Wie kann man Ctrl+Tab "Shortcut" richtig implementieren (VCL/Win32)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also gerade für STRG + Tab ist das ja eher ungewöhnlich wenn man den nächsten oder den vorherigen Reiter anspringen will. Beim Browser, Adobe Reader, ... wird die Action überall sofort ausgelöst.

Zwei Ausnahmen davon kenne ich allerdings. Beide sind von Microsoft und basieren auf dem gleichen System. Und zwar Visual Studio und das Microsoft SQL Server Management Studio. Dort gibt es so ein Stack Window das immer die zuletzt geöffnete Datei als nächstes anspringt. Hält man hier STRG gedrückt, bleibt das Fenster offen.

Willst du auch so etwas wie in SSMS und VS erreichen? Oder doch eher die normale Implementierung eines Tab Switchers?

Delphi.Narium 16. Dez 2020 17:27

AW: Wie kann man Ctrl+Tab "Shortcut" richtig implementieren (VCL/Win32)
 
Es kommt halt drauf an, ob man die Tastaturabfrage im FormOnKeyDown oder im FormOnKeyUp macht.

Im OnKeyDown könnte man halt z. B. das "Fenster" ala Alt+Tab von Windows anzeigen und dann bei jedem Drücken von Tab die Position des selektierten Icons um eins nach rechts verschieben. Bei zusätzlich gedrückter Umschalttaste um eins nach links. Und erst beim OnKeyUp wird dieses Fenster verborgen und zu dem zuletzt gewählten Ziel gewechselt.

Ob man nun im Tastaturereignis Alt+Tab abfragt oder Ctrl+Tab oder welche Kombination auch immer, ändert nichts an der grundsätzlichen Logik.

ShortCuts für TActions sind für sowas (leider) nicht geeignet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 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