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/)
-   -   Action-Shortcut wird im Menü nicht ausgeführt. Warum? (https://www.delphipraxis.net/180105-action-shortcut-wird-im-menue-nicht-ausgefuehrt-warum.html)

ULIK 23. Apr 2014 12:08

Action-Shortcut wird im Menü nicht ausgeführt. Warum?
 
Auch wenn mir die Frage jetzt schon wirklich peinlich ist (hab das anscheinend seit geraumer Zeit nie ausprobiert): Wieso funktionieren Action-Shortcuts in offenen Menüs oder Popupmenüs nicht?

Genauer: ich hab ein Standard VCL Hauptmenü das ein Item in einen Untermenü enthält. Diesem Item ist eine Action mit ShortCut Strg+D zugewiesen (alternativ, das so definierte Item ist einem Popupmenü zugewiesen).

Zur Laufzeit funktioniert der Shortcut bestens, wenn ich ihn einfach so aufrufe. Nun öffne ich mit der Maus das Menü und ich sehe den Eintrag mit dem ihm zugewiesenen Shortcut. Wenn ich nun Strg+D drücke, dann passiert gar nichts. Das gleiche gilt, wenn ich das Popup-Menü öffne. Auch hier reagiert der Shortcut nicht.

Gibt es da einen Grund dafür? Und kann man das Ganze umgehen, so daß der Shortcut dennoch ausgeführt wird (und dabei das Menü schließt)?

Ja, ich weiß, daß ich auch der Caption ein Tastenkürzel zuweisen kann und das funktioniert auch, aber ich bin auf das Problem gestoßen, daß mein Programm bei einer bestimmten Aktion ein Kontextmenü anzeigt, das die Option zum Kopieren von Daten ins Clipboard enthält (die Daten stehen aber erst mit Öffnen des Kontext-Menüs zur Verfügung, deswegen kann der Shortcut nicht direkt aufgerufen werden; das kann auch nicht geändert werden). Und diese Aktion will ein Benutzer mit Strg+C (also dem Standard) auslösen. Was nun nicht funktioniert.

edit: Umgebung ist Delphi XE

Grüße,
Uli

himitsu 23. Apr 2014 12:36

AW: Action-Shortcut wird im Menü nicht ausgeführt. Warum?
 
Ich vermute mal die ShortCuts werden nur in der ParentForm/ParentControl ausgewertet und nicht im Menü.
Eventuell kann man das Menü entsprechend erweitern. (selber einbauen)

Ach ja, du könntest im OnKeyDown der Strg+C "abfangen" (Key aber nicht auf 0 setzen) und dort die nötigen Daten bereitstellen, bzw. das OnPopup-Event aufrufen (da ist dein Code doch drin?), dann ginge Strg+C auch ohne das Menü zu öffnen.

ULIK 23. Apr 2014 13:20

AW: Action-Shortcut wird im Menü nicht ausgeführt. Warum?
 
Zitat:

Zitat von himitsu (Beitrag 1256649)
Ich vermute mal die ShortCuts werden nur in der ParentForm/ParentControl ausgewertet und nicht im Menü.
Eventuell kann man das Menü entsprechend erweitern. (selber einbauen)

Werd mal schauen, ob sich da was machen läßt. Fragt sich nur, ob sich der Aufwand lohnt :-) Scheint ja anscheinend kein offensichtlicher Fehler von mir zu sein (die IDE und Notepad können das nämlich auch nicht), was ich jetzt so herausgefunden habe.

Zitat:

Zitat von himitsu (Beitrag 1256649)
Ach ja, du könntest im OnKeyDown der Strg+C "abfangen" (Key aber nicht auf 0 setzen) und dort die nötigen Daten bereitstellen, bzw. das OnPopup-Event aufrufen (da ist dein Code doch drin?), dann ginge Strg+C auch ohne das Menü zu öffnen.

Jein, das Popupmenü muß auf alle Fälle erscheinen, da es am Ende der eigentlichen Aktion aufgerufen wird und das Kopieren der Daten nur einer von mehreren gleichberechtigten Folgeaktionen ist. Es war 'nur' ein Benutzer, der sich beschwert hatte, daß man mit Strg+C nicht das Kopieren in dem Popup-Menü auswählen kann und man stattdessen nochmal mit der Maus hinklicken muß.

Aber ich hab dem Ganzen nun auf alle Fälle Tastenkürzel in der Caption verpaßt, mal schauen, was dazu gesagt wird :) Mich hat's dann nur gewundert, daß das generell nicht zu gehen scheint.


vielen Dank,
Uli


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