Bonjour à touteset à toi
J'utilise un stringgird dérivé :
J'ai mis en place aujorud'hui cette procédure dans cet unité
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 unit StringGridRu; {Aidé par Andnotor} interface uses SysUtils, Classes, Controls, Grids, Messages, Windows, Dialogs; type TStringGridRu = class(TStringGrid) private { Déclarations privées } protected { Déclarations protégées } procedure WMVSCROLL(var Message :TMessage); message WM_VSCROLL; procedure WMMOUSEWHEEL(var Message :TMessage); message WM_MOUSEWHEEL; procedure WMKEYDOWN(var Message :TMessage); message WM_KEYDOWN; public { Déclarations publiques } procedure CheckInBounds; published { Déclarations publiées } end; procedure Register; implementation procedure TStringGridRu.WMVSCROLL(var Message :TMessage); begin inherited; CheckInBounds; Invalidate; end; procedure TStringGridRu.WMMOUSEWHEEL(var Message: TMessage); begin inherited; CheckInBounds; Invalidate; end; procedure TStringGridRu.WMKEYDOWN(var Message: TMessage); begin Case Message.WParam of 33:begin // Page Up inherited; CheckInBounds; Invalidate; end; 34:begin // page Down inherited; CheckInBounds; Invalidate; end; 38:begin // Up inherited; CheckInBounds; Invalidate; end; 40:begin // Down inherited; CheckInBounds; Invalidate; end; end; end; procedure TStringGridRu.CheckInBounds; var i :Integer; // Col :integer; Row :integer; begin //Liste des Shapes for i := 0 to ControlCount -1 do begin // col := HiWord(Controls[i].Tag); Row := Controls[i].Tag; //Cache le Shape si la ligne est masquée ou le positionne Controls[i].Visible := CellRect(0, Row).Top > 0; Controls[i].Top := CellRect(0, Row).Top; end; end; procedure Register; begin RegisterComponents('RuCompos', [TStringGridRu]); end; end.
procedure TStringGridRu.WMKEYDOWN(var Message: TMessage);
Pour que si l'utilisateur utilise les fleches bas/haut ou Page down/ Page UP que s'exécute la procédure CheckInBounds.
Mais le problème, plus aucune autre touche est reconnu, si j'appuie sur la fleche de droite par exemple il ne se passe plus rien sur mon Stringgrid
Que puis-je faire ? autre message windows ?
Partager