Bonjour
J'utilise un TStringGrid et je souhaite desactiver le scroll de la souris.
Quelqu'un sait comment faire ?
Merci
Bonjour
J'utilise un TStringGrid et je souhaite desactiver le scroll de la souris.
Quelqu'un sait comment faire ?
Merci
Salut!
Bon dev!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.StringGrid1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin Handled := true; end; procedure TForm1.StringGrid1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin Handled := true; end;
En faite j'ai bien essaye un truc dans le genre mais je ne comprends pas pourquoi ca ne fonctionne pas...
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 TLightDBGrid = class(TStringGrid) private etc public etc end; constructor TLightDBGrid.create(AOwner:TComponent); begin inherited create(AOwner); borderstyle := bsNone; ScrollBars := ssNone; FixedCols := 0; parentcolor := false; visible := false; DefaultRowHeight := 16; OnMouseWheel := EmpecheMouseWheel; OnMouseWheelUp := EmpecheMouseWheel; OnMouseWheelDown := EmpecheMouseWheel; options:=[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRowSelect]; end; procedure TLightDBGrid.EmpecheMouseWheel(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin handled :=true; end;
Parce que tu traite le systeme via les gestionnaiers d'evenements.
Quand le compo StringGrid detecte un evenement "MouseWheelDown" par exemple, il execute une fonction qui effectue le traitement que tu desire supprime.
Ensuite il fait appel a la fonction associee a l'evenement "OnMouseWheelDown" pour completer cette action par du code specifié par l'utilisateur (toi).
Donc specifier une fonction "qui ne fait rien" comme gestionnaire d'evenement ne fait que preciser que le comprortement supplementaire de l'utilisateur est : "Rien".
Pour supprimer completement cette action, il faut surcharger la methode protected qui effectue le traitement (surement mousewheelhandle) et ne pas faire appel a Inherited.
Par contre selon ce que fait comme traitement cette fonction, tu risque d'avoir pour effet de bord, plusieurs autres actions qui sont annulée.
Dans ce cas il faudra peut etre affiner ....
Une autre solution serait de surcharger wndProc qui s'occupe du traitement des messages.
Tester le type du message recu, et si c'est un de ceux associé a la roulette souris (CM_MOUSEWHEEL par exemple) retourner handled a true sinon faire appel a hinherited wndproc.
Bon courrage !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager