Salut,
j'ai une liste de TEedit et je veux que lorsque l'utilisateur presse sur la barre d'espace le curseur passe à l'edit suivant...
ce que je ne trouve pas c'est comment passer :? à un autre edit.
merci d'avance :idea: .
Version imprimable
Salut,
j'ai une liste de TEedit et je veux que lorsque l'utilisateur presse sur la barre d'espace le curseur passe à l'edit suivant...
ce que je ne trouve pas c'est comment passer :? à un autre edit.
merci d'avance :idea: .
Utilise la propriété TabOrder de tes TEdit.
Premier TEdit qui doit avoir le focus : TabOrder := 1;
Deuxième TEdit qui doit avoir le focus : TabOrder := 2;
...
Ensuite, chaque évenement "KeyDowm" de tes TEdit pointe sur cette procedure qui simule l'appuie sur la touche TAB quand on appuie sur la touche space :
:wink:Code:
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_SPACE then begin Key := Word(#0); Keybd_event(VK_TAB,0,0,0); Keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); end; end;
merci :) mais comment annuler l'espace tapé :( , j'ai pensé à le chercher puis le supprimer mais est ce qu'on peut annuler l'effet de la touche autre de ce qu'on a preciser ?
Erreur de ma part dans l'évènement en effet.
Et voilà :wink:Code:
1
2
3
4
5
6
7
8
9
10 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key = Char(VK_SPACE) then begin Key := #0; Keybd_event(VK_TAB,0,0,0); Keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); end end;
autre chose c'est que lorsque le edit contient déja un texte alors il est effacé..
càd faut completement changer le role de l'espace..
La prochaine fois mets un titre plus explicite que "Tab", tu auras plus de chance d'être aider.
Et n'oublies pas de cliquer sur "Résolu" en bas à gauche :wink:
Je m'excuse PyRoFlO mais avec mon ptit débit g pas encore vu votre correctif :wink: et maintenant merci pour le nouveau code qui marche parfaitement mais pouvez vouez m'expliquez ligne par ligne ce code car ds le help y'a pas Keybd_event..
Code:
1
2
3
4
5 Key := #0; Keybd_event(VK_TAB,0,0,0); Keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
PS: Pour le [Résolu] c'est apres l'explication :lol: .
merci encore
Excuses acceptées :lol:
La prochaine fois j'expliquerai de suite, ça évitera de recharger la page :D :wink:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin // Si la touche pressée est la barre d'espace if Key = Char(VK_SPACE) then begin // On annule l'effet de cette touche Key := #0; // On simule l'appuie sur la touche TAB Keybd_event(VK_TAB,0,0,0); // Puis on simule son relachement Keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0); end end;
merci pour votre generosité PyRoFlO :wink: car sinon avec Keybd_event(VK_SHIFT,0,0,0) seulement j'ai failli supprimer: tt mes archives 8O !!!
:lol:Citation:
Envoyé par jihed
Bonne continuation :wink: