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 :

[D7] TStringGrid, OnMouseWheel et OnClick


Sujet :

Delphi

  1. #1
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 388
    Points : 3 160
    Points
    3 160
    Par défaut [D7] TStringGrid, OnMouseWheel et OnClick
    Bonjour,
    j'ai un TStringGrid sur ma Form et un traitement dans le OnClick du TStringGrid.

    A l’exécution, lorsque l'on utilise la roulette de la souris dans la grille, le OnClick de la grille se déclenche. Je voudrais éviter cela.

    Pour l'éviter, j'ai mis un booléen dans le onMouseWheelup et down.

    ça fonctionne, mais n'y a t il pas une méthode plus propre pour bloquer le OnClick dans le OnMouseWheel ?

    Merci d'avance

    A+
    Charly

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 742
    Points : 5 432
    Points
    5 432
    Par défaut
    Ce comportement est normal et natif au TStringGrid.
    Lorsque tu fait un coup de roulette, tu changes de lignes et lorsque tu change de ligne, cela fait automatiquement un clic dans la cellule pour la sélectionner.

    Le code ci-dessous est copié depuis la VCL.
    Pour rappel TStringGrid hérite de TCustomGrid

    Code Delphi : 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
    function TCustomGrid.DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean;
    begin
      Result := inherited DoMouseWheelDown(Shift, MousePos);
      if not Result then
      begin
        if Row < RowCount - 1 then Row := Row + 1;
        Result := True;
      end;
    end;
     
    procedure TCustomGrid.SetRow(Value: Longint);
    begin
      if Row <> Value then FocusCell(Col, Value, True);
    end;
     
    procedure TCustomGrid.FocusCell(ACol, ARow: Longint; MoveAnchor: Boolean);
    begin
      MoveCurrent(ACol, ARow, MoveAnchor, True);
      UpdateEdit;
      Click;
    end;

    ça n'engage que moi, mais j'aurais contourné le problème de la même façon.
    Après, il faut voir si tu as réellement besoin de cet événement click ou si tu peux en utiliser un autre (ColEnter, RowEnter, CellEnter, ...)

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 388
    Points : 3 160
    Points
    3 160
    Par défaut
    Merci Popo,

    je vais conserver ma solution qui fonctionne bien

    A+
    Charly

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TListView] OnClick ? Tri ?
    Par remixtech dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/04/2003, 21h33
  2. TMenuItem.OnClick et TNotifyEvent
    Par Jacques Deyrieux dans le forum Composants VCL
    Réponses: 4
    Dernier message: 31/03/2003, 11h24
  3. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  4. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31
  5. Comment imprimer le contenu d'un TStringGrid
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/06/2002, 15h41

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