11 Stimme

Delphi/Lazarus: Shortcut für MenuItem im Code zuweisen

Frage von Compi | 01.02.2018 um 12:55

Ich möchte die Tastenkombination beziehungsweise den Shortcut eines Menu-Items im Code setzen statt über den Object Inspector. Im Object Inspector hat man dafür eine Dropdown-Liste, wo man das Tastenkürzel auswählen kann.

Wenn ich aber folgendes im Code schreibe:

MenuItem.ShortCut := 'F1';

Bekomme ich die folgende Fehlermeldung:

Error: Incompatible type for arg no. 1:
Got "Constant String", expected "TShortCut"

Was mache ich hier falsch? Im Object Inspector wählt man ja auch einen String aus, hier wird aber gemeckert, dass ich einen String übergeben habe. Oder kann man diese Eigenschaft nur über den Inspektor ändern?

AntwortenPositivNegativ
3Beste Antwort3 Stimmen

Eine Änderung oder Zuweisung des Shortcuts ist auch im Code möglich. Allerdings dürfen wir hier keinen String übergeben, da TShortCut vom Typ Word ist.

Zum Glück stellen aber Delphi und Lazarus die Funktion TextToShortCut zur Verfügung, mit der wir bequem einen String in den erforderlichen Zahlenwert konvertieren können.

In deinem Beispiel könntest du also schreiben:

MenuItem.ShortCut := TextToShortCut('F1');

Die Funktion TextToShortCut wandelt die String-Repräsentation eines Tastenkürzels in die Code-Repräsentation desselben Tastenkürzels um. Für den umgekehrten Weg gibt es die Funktion ShortCutToText. In der IDE wird übrigens beim Setzen des Shortcuts intern auch diese Funktion aufgerufen, sodass man hier bequem einen Shortcut als String eingeben kann.

Eine andere nützliche Funktion ist ShortCutToKey. Diese Funktion kann dazu benutzt werden, die String-Repräsentation eine Tastenkombination sowohl in den Key als auch den ShiftState zu splitten.
01.02.2018 um 13:47

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.