IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

[StringGrid] Empecher le scroll de la souris


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Points : 95
    Points
    95
    Par défaut [StringGrid] Empecher le scroll de la souris
    Bonjour

    J'utilise un TStringGrid et je souhaite desactiver le scroll de la souris.
    Quelqu'un sait comment faire ?

    Merci

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Salut!

    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;
    Bon dev!

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Points : 95
    Points
    95
    Par défaut
    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;
    En faite j'ai bien essaye un truc dans le genre mais je ne comprends pas pourquoi ca ne fonctionne pas...

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    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 !

Discussions similaires

  1. Empecher le scroll de la souris
    Par mordrhim dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2021, 20h52
  2. [Firefox][IE] Empecher le scroll avec la barre d'espace
    Par scougirou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/08/2007, 10h35
  3. Scroll avec la souris
    Par domb_st dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/05/2007, 18h41
  4. stringgrid et clic droit de la souris
    Par didier17062006 dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/11/2006, 10h01
  5. Combobox et Scroll de la souris
    Par Ben_Le_Cool dans le forum Composants VCL
    Réponses: 9
    Dernier message: 13/03/2006, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo