Bonjour,
je souhaite intercepter toutes les touches claviers qui sont appuyées lorsque le Control a le focus.
Le problème c'est que le touche de direction font passer à l'autre control.
Voilà ce que j'ai essayé :
Sans succes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 procedure WMChar(var Msg: TWMChar); message WM_CHAR; procedure WMKeyDown(var Msg: TWMKeyDown); message WM_KEYDOWN; procedure SubClassWndProc(var Message: TMessage); procedure TIE7Edit.SubClassWndProc(var Message: TMessage); begin if Message.Msg = WM_KEYDOWN then WMKeyDown(TWMKeyDown(Message)) else WndProc(Message); Self. end; procedure TIE7Edit.WMKeyDown(var Msg: TWMKeyDown); var Shift : Boolean ; begin Shift := getkeyState(VK_SHIFT) <> 0 ; if Msg.CharCode = VK_LEFT then begin if not Shift then begin CursorPos := CursorPos - 1 ; end else begin end ; end ; // VK_RIGHT end ; procedure TIE7Edit.WMChar(var Msg: TWMChar); begin { Msg: Cardinal; CharCode: Word; Unused: Word; KeyData: Longint; Result: Longint; } FText := Char(Msg.CharCode) ; // Msg.KeyData end ;
Il me reste comme solution d'utiliser le gestionnaire OnKeyDown mais pour les flèche droite/gauche ça passe au control suivant.
Partager