cs_MohInfo
Messages postés58Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention14 juin 2011
-
22 avril 2011 à 22:03
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
24 avril 2011 à 17:00
Bonsoir à tous
lors de l'utilisation de l'évènement FormKeyDown de ma form (FormStyle = fsMDIForm)je veux faire un raccourci clavier pour chaque bouton (TspeedButton)de la barre d'outils de mon application par exemple : pour le bouton nouveau je fais [Ctrl+N] et ainsi de suite ... le problème c'est que ce raccourci marche uniquement avec le premier bouton et les autres raccourcis des autres speedButton ne marche plus !!! :
voila mon code
If Shift = [ssCtrl] Then
If (Key 78) or (Key 110)Then
Begin
with TNewDocument.Create(nil) do
Try
ShowModal;
Finally
Free;
End;
End
Else
If Shift = [ssCtrl] Then
If (Key 83) or (Key 115)Then
Begin
with TStatistiques.Create(Nil) do
Try
ShowModal;
Finally
Free;
End;
End
....
merci bien pour votre aide
cs_MohInfo
Messages postés58Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention14 juin 2011 24 avril 2011 à 13:31
tous d'abord il faut dire salut
puis
il faut comprendre la question pour savoir répondre
moi je veux exploiter le[ctrl+une touche] dans la barre des tache et non dans la barre des menus ok puis il y a une solution trés simple que l'utilisation des barre des menu c'est l'exploitation de la touche [Alt+une touche]
tous simplement en met & avant la lettre que je veux l'exploiter puis faire Alt+ lettre et c'est tous,
mais moi je veux [crtl+une touche]
merci pour votre participation...
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 24 avril 2011 à 17:00
en premier lieu, tu parle de barre d'outils, puis de barre des taches. à toi d'être clair dans tes propos.
un menu (TMainMenu / TMenuItem) ne se coltine pas aux simple ALT+Key, il peut aussi accepter les CTRL, SHIFT, CTRL+ALT
par défaut si l'on place un symbole "&" devant un nom de menu Delphi lui assigne un raccourcis standards ALT+Lettre :
&Fichier, &Edit, &Aide, &Outils etc.
Rien ne nous oblige à utiliser cette convention, car on peut redéfinir comme bon nous semble le raccourcis dans la propriété ShortCut du MenuItem.
dans ton code (non indenté donc ne facilitant pas la lecture) il y a une erreur de construction du IF :
if SHIFT [ssCTRL] then ... else if SHIFT [ssCTRL] then ...
donc seul la première condition s’exécute puisque les conditions sont identique, delphi exécute la première et ignore la seconde.
voici une correction fonctionnelle à placer dans le gestionnaire d’événement OnShortCut de la fiche:
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var
ShiftState: TShiftState;
begin
ShiftState := KeyDataToShiftState(Msg.KeyData);
if [ssCTRL] = ShiftState then // CTRL+Key
begin
case Msg.CharCode of
78,110: // Ctrl+n or Ctrl+N
begin
showMessage('CTRL+N');
handled := true;
end;{/78,110}
83,115: // Ctrl+s or Ctrl+S
begin
showMessage('CTRL+S');
handled := true;
end;{/83,115}
end;{/case}
end;{/if}
end;