Bonjour à tout le monde des développeurs,
Comment parcourir un dbgrid en utilisant la touche Entrée au même effet que la touche gauche (se déplacer d'une colonne à une autre en utilisant la touche Entrée)?
Merci d'avance.
Version imprimable
Bonjour à tout le monde des développeurs,
Comment parcourir un dbgrid en utilisant la touche Entrée au même effet que la touche gauche (se déplacer d'une colonne à une autre en utilisant la touche Entrée)?
Merci d'avance.
Utilise l'evenement onkeydown:
Code:
1
2
3
4
5
6
7 procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = 13 then if DBGrid1.SelectedIndex < DBGrid1.Columns.Count - 1 then DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1; end;
Salut
J’ai utilisé ce code mais ça n'a pas marché.
#13
salut
popo et Just-Soft
j'essayerais
merci.
Salut
Malheureusement ça n'a pas marché ni
NiCode:Key := VK_LEFT;
Mais dans quel cas les flèches du clavier et la touche entrée ne fonctionnent pas dans un dbgrid et comment faire pour forcer leurCode:#13
Je 'excuse
..Leur fonctionnement.
Merci
Voilà un code qui fonctionne parfaitement chez moi :
J'ai fait simple : bien sûr dans un code 'bien fini' il faut tester la position en fonction du nombre de colonnes (comme l'a signalé popo)Code:
1
2
3
4
5
6
7 procedure TFRM_Form.DBGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = Key_Enter) or ( key = Key_return) then DBGrid.SelectedIndex = DBGrid.SelectedIndex + 1; end;
Je n'ai pas essayé VK_RETURN en Delphi, mais en LAZARUS et là ça fonctionne aussi.
salut
JP.NUAGE
Ok merci pour le code
Mais pourquoi les flèches du clavier ne fonctionne pas dans mon dbgrid.
Salut;
tout simplement parce que le code fournie teste la touche entrée, si tu veux qu'il gère la touche gauche faut l'inclure dans le code, je crois que c'est VK_LEFT à toi de vérifier ça.
Autre chose, tu dois contrôler les limites pour ne pas avoir erreur si tu es sur la 1ère colonne et tu essais de te déplacer encore à gauche.
salut
réponse pour JP.NUAGE
malheureusement ça ne marche pas.
merci
Salut
Réponse pour
Just-Soft
Oui mais normalement les flèches fonctionne par défaut, même si je fais le test
Vk_up, ou vk_down ça ne marche pas, c'est vraiment fatiguant ce problème de flèches et touches.
Salut
Mais j'ai rien ajouté dans l'événement du Dbgrid? Aussi dans l'événement keydown, et keypress et keyup de la form principale est vide.
Vraiment ce problème m'empêche d'avancer sur mon projet.
:cry:
Salut
Oui j'ai utilisé plusieurs codes sans résultats, et après j'ais tout effacé de l'événement du dbgrid aussi les flèches du claviers ne fonctionnent pas avec le dbgrid. :?
salut
@+ PhilCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 procedure TMaForm.MaGrilleKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var Grid : TDbGrid; begin if (key=VK_RETURN) or (key=VK_TAB) Then begin Grid := (Sender as TDbGrid); if Grid.FieldCount > Succ(Grid.SelectedIndex) then begin Keybd_event(VK_RIGHT,0,0,0); key:=0; end else begin Grid.SelectedIndex := 0; Keybd_event(VK_DOWN,0,0,0); key:=0; end; end; inherited; end;
salut
anapurna
j'ai bien copier le code merci
anapurna
Salut
J’ai essayé ton code mais mon dbgrid refuse de bouger, c'est comme j'ai ajouter une pierre et pas un composant, mais SVP peut tu m'expliquer un peu ton code.