Bonjour à tous,
Voici mon soucis : j'ai créé une petite base paradox avec un DbGrid (son DataSet et sa Ttable associés), et je chercher à pouvoir me déplacer latéralement, de colonne en colonne, via la touche TAB.
Par défaut le comportement de la touche TAB dans le DbGrid consiste à passer à la ligne suivante, et non pas à la colonne suivante. J'ai donc cherché sur le net j'ai trouvé une solution (source) qui me convient à 99%, la voici (je l'ai inscrite dans procédure OnKeyPress de mon DbGrid) :
Cela fait exactement ce que je souhaite, mais avec la touche Enter (#13). Gai comme un pinson, je me dit qu'il n'y a qu'à remplacer la correspondance ASCII #13 (retour de chariot) par #9 (touche TAB). Cela marche parfaitement, MAIS tant que je ne suis pas en "mode édition" (càd en train d'écrire dans une cellule), cas de figure dans lequel TAB passe tout de même à la ligne suivante.
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 if(Key = #13)//retour de chariot a été pressé then begin Key := #0;//évite le beep if(ActiveControl IS TDBGrid) then begin with ActiveControl AS TDBGrid do if SelectedIndex < pred(fieldcount) then SelectedIndex := SelectedIndex + 1 //prochaine colonne else SelectedIndex := 0 //retour première colonne end else SelectNext(ActiveControl AS TWinControl, True, True)//en avant end else if(Key = #2) then SelectNext(ActiveControl AS TWinControl, False, True) //en arrière
Auriez-vous une idée concernant ce petit problème ?
D'avance merci pour votre aide.
Partager