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?
Sujets Connexes
MySQL: Sauts de Ligne dans MySQL
Conseil | 0 Commentaires
Lazarus: Charger Fichier en tant que Array d'Octets et Enregistrer Array d'Octets en tant que Fichier
Tutoriel | 0 Commentaires
Delphi/Lazarus: La touche ALT, SHIFT ou CTRL est-elle enfoncée?
Tutoriel | 0 Commentaires
Delphi/Lazarus: Sélectionner tout avec CTRL+A dans ListView
Conseil | 0 Commentaires
Delphi/Lazarus: Afficher Array d'Octets sous forme de Chaîne de Valeurs HEX
Conseil | 0 Commentaires
Delphi/Lazarus: Afficher la Date et l'Heure actuelles
Conseil | 0 Commentaires
Delphi/Lazarus: Ajouter un Item ou Ligne à ListView
Info | 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.
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