Bonjour à tous.


L'exemple suivant montre comment utiliser une combinaison de touches de clavier 'Ctrl+X' (p.ex), de deux codes

'FormKeyDown' et 'Button1KeyDown' qui s'exécutent exclusivement l'un de l'autre selon la valeur 'KeyPreview'.

1/ si KeyPreview=True, le code suivant s'exécute:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); //relatif à une Forme.
  begin
  if  (Shift = [ssCtrl]) then
    begin
       Case key of
       Ord('A'): ShowMessage ('AForm'); //KeyPreview=True.
       Ord('B'): ShowMessage ('BForm');
       Ord('C'): ShowMessage ('CForm');
       end;
    end;
  end;
2/ si KeyPreview=False, le code suivant s'exécute:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);// relatif à un Boutton.
begin
 if  (Shift = [ssCtrl]) then
    begin
       Case key of
       Ord('A'): ShowMessage ('AButton'); //KeyPreview=False.
       Ord('B'): ShowMessage ('BButton');
       Ord('C'): ShowMessage ('CButton');
       end;
    end;
end;
On peut utiliser un 'Button2' pour modifier l'état de 'KeyPreview':
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
procedure TForm1.Button2Click(Sender: TObject);
begin
  if form1.KeyPreview=true then
    form1.KeyPreview:=false
    else
     form1.KeyPreview:=true;
     button1.SetFocus ;
end;
merci à tous.