Bonjour tout le monde !
Je cherche comment automatiser le déplacement et l'affichage du curseur dans un StringGrid. Je voudrais que le curseur se déplace à la ligne suivante lorsque l'utilisateur appuie sur Entrée.
J'ai trouvé un code qui fait presque ce que je veux, mais pas tout à fait. Voyez l'exemple suivant : si je clique sur le bouton, ou si j'appuie sur Entrée, le résultat n'est pas exactement le même, quoique le code soit identique. En cliquant sur le bouton, le curseur se déplace et s'affiche. En appuyant sur Entrée, la sélection (?) se déplace, mais le curseur n'apparaît pas.
Pratiquement ça ne fait pas de différence, puisque qu'on peut quand même taper du texte, sans avoir à cliquer d'abord sur la cellule, mais pour l'utilisateur c'est quand même plus clair s'il voit le curseur qui clignote.
Bref, pourquoi est-ce que j'obtiens deux résultats différents ? et comment avoir le curseur clignotant après un appui sur la touche Entrée ?
P.-S. Impossible de retrouver une discussion que j'avais ouverte sur un projet de carnet de notes du professeur pour Delphi XE2. C'est ce projet que je reprends : j'aurais bien voulu relire et éventuellement continuer la même discussion.
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 unit UCurseur2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; procedure Button1Click(Sender: TObject); procedure StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin with StringGrid1 do begin if Row < RowCount - 1 then Row := Row + 1 else Row := 0; SetFocus; EditorMode := True; end; end; procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 13 then with StringGrid1 do begin if Row < RowCount - 1 then Row := Row + 1 else Row := 0; SetFocus; EditorMode := True; end; end; end.
Partager