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) :

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
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.

Auriez-vous une idée concernant ce petit problème ?
D'avance merci pour votre aide.