salut
bon un peu d'explication
dans l'evenement onkeydown de la grille
1 2 3
|
procedure TMaForm.MaGrilleKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); |
je regarde la touche appuyer si c'est la touche entre ou la touche tab
if (key=VK_RETURN) or (key=VK_TAB)
je definie une variable Grid c'est pour une utilisation simplifié
je dit don que l'appelent est le dbgrid
Grid := (Sender as TDbGrid);
ensuite je verifie que le nombre de champs de la grille n'est pas
supperieur a la prochaine valeur de SelectedIndex
if Grid.FieldCount > Succ(Grid.SelectedIndex) then
si c'est le cas je simule un appui sur la fleche droitece qui me permettra de passé a la case suivante
Keybd_event(VK_RIGHT,0,0,0);
dans le meme temps j'annule la valeur de la clef pour qu'elle ne soit pas traiter
par le inherited
par contre si nous arrivon en fin de ligne
je remet le SelectedIndex a zero (premiere case)
je simule l'appuie sur la qui decent
Keybd_event(VK_DOWN,0,0,0);
dans le meme temps j'annule la valeur de la clef pour qu'elle ne soit pas traiter
par le inherited
dans tous les cas je fait le traitement attendu pour un fonctionnement normal d'un dbgrid
si ton probleme persiste
je suppose que la fenetre ou ce trouve le dbgrid intercepte l'évènement avant que celui-ci ne se produit
tu as mis un point d'arrêt dans la méthode pour voir si tu passe dedans ?
@+ Phil
Partager