Bonjour,

J'ai récupéré sur le net récemment ce code qui permet de faire disparaitre les scrollbars d'un dbgrid (verticale et horizontal).
Mon besoin étant de faire disparaitre juste l'horizontale.
J'utilise donc ce code :

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
 
  private
    { Private declarations }
...
    FDBGridWndProc: TWndMethod;
    procedure DBGridWndProc(var Msg: TMessage);
...
implementation
 
Uses
  ....;
 
{$R *.dfm}
...
 
procedure TFormPrincipal.DBGridWndProc(var Msg: TMessage);
begin
  ShowScrollBar(DBGridCategorie.handle, SB_HORZ, False);
  ShowScrollBar(DBGridCategorie.Handle, SB_VERT, True);
  FDBGridWndProc(Msg);
end;
...
 
procedure TFormPrincipal.FormCreate(Sender: TObject);
Begin
....
  {CACHE LES SCROLLBARS DU DBGRIDCategorie}
  FDBGridWndProc := DBGridCategorie.WindowProc;
  DBGridCategorie.WindowProc := DBGridWndProc;
...
Cela fonctionne parfaitement.
Mais j'ai besoin de faire la même chose sur un autre dbgrid placé également sur cette form.
J'ai tenté de doubler les procedures sans succès et avec plantage. donc j'ai essayé cela ci-dessous, mais je ne c'est pas quoi mettre à un moment.

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
  private
    { Private declarations }
...
    FDBGridWndProc: TWndMethod;
    procedure DBGridMultipleWndProc(DBGrd: TDBGrid; var Msg: TMessage);
...
implementation

Uses
  ....;

{$R *.dfm}
...

procedure TFormPrincipal.DBGridMultipleWndProc(DBGrd: TDBGrid; var Msg: TMessage);
begin
  ShowScrollBar(DBGrd.handle, SB_HORZ, False);
  ShowScrollBar(DBGrd.handle, SB_VERT, True);
  FDBGridWndProc(Msg);
end;
...

procedure TFormPrincipal.FormCreate(Sender: TObject);
Begin
....
  {CACHE LES SCROLLBARS DU DBGRIDCategorie}
  FDBGridWndProc := DBGridCategorie.WindowProc;
  DBGridCategorie.WindowProc := DBGridMultipleWndProc( ??????); 
// que puis-je mettre ici ? j'ai essayé DBGridMultplieWndProc(DBGridCategorie); mais cela ne fonctionne pas ?
...
Avez-vous une idée ?