22 Voix

Delphi/Lazarus: Attribuer ShortCut à MenuItem par programmation

Question de Compi | 03/11/2026 à 16:04

Je souhaite définir la combinaison de touches (ShortCut) d'un élément de menu (Menu Item) par le biais du code, plutôt que via l'Object Inspector. Dans l'Object Inspector, une liste déroulante permet de sélectionner ce raccourci.

Cependant, lorsque j'écris la ligne de code suivante...

MenuItem.ShortCut := 'F1';

...j'obtiens le message d'erreur suivant:

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

Qu'est-ce que je fais de travers ici? Dans l'inspecteur d'objets, on peut bien sélectionner une chaîne de caractères, mais dans le code, le compilateur signale une erreur parce que je lui transmets une chaîne. Ou bien cette propriété ne peut-elle être modifiée que via l'inspecteur?

RépondrePositifNégatif
2Meilleure Réponse2 Voix

Il est également possible de modifier ou d'attribuer un raccourci clavier par le biais du code. Cependant, on ne peut pas simplement transmettre une chaîne de caractères, car "TShortCut" est de type "Word".

Heureusement, Delphi comme Lazarus proposent la fonction TextToShortCut(), qui permet de convertir facilement une chaîne de caractères en la valeur numérique requise.

Ainsi, dans votre exemple, vous pouvez écrire:

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

La fonction TextToShortCut() transforme la représentation textuelle d'un raccourci clavier en sa représentation sous forme de code. Pour effectuer l'opération inverse, il existe la fonction ShortCutToText(). Par ailleurs, cette fonction est également appelée en interne par l'IDE lors de la définition d'un raccourci, ce qui permet de saisir facilement un raccourci sous forme de chaîne de caractères depuis l'inspecteur d'objets (Object Inspector).

Une autre fonction utile est ShortCutToKey(). Elle permet de décomposer la représentation textuelle d'une combinaison de touches en deux éléments: la touche elle-même (Key) et l'état des touches modificatrices (ShiftState).
03/11/2026 à 19:22

RépondrePositif Négatif
Répondre

Sujets Connexes

MySQL: Sauts de Ligne dans MySQL

Conseil | 0 Commentaires

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.