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

Vos contributions VB6 Discussion :

Récupérer les événements de la molette de la souris [Sources]


Sujet :

Vos contributions VB6

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut Récupérer les événements de la molette de la souris
    Et encore un de plus, décidément , je suis en forme aujourd'hui

    Ce composant à placer sur une form, recupére les evenements déclenchés par la molette de la souris.

    Sont fournis : le controle ayant de focus au momment du mouvement de la molette, le sens du mouvement, les coordonées de la souris

    Voici un exemple de code sur l'evénement déclenché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Wheel1_WheelRotate(ctrl As Object, Delta As Long, X As Long, Y As Long)
      Dim CtrlIndex as string
      Dim CtrlName as string
      On Error Resume Next
      CtrlIndex = Cstr(Ctrl.Index)
      On Error goto 0
      If CtrlIndex="" Then
        CtrlName = ctrl.Name
      Else
        CtrlName = ctrl.Name & "(" & Ctrlindex & ")"
      End If
      Debug.Print CtrlName, Delta, X, Y
    End Sub
    Note : seuls les événements ayant une propriété hWnd peuvent déclencher un événement, donc pour les labels, rien à faire.


    OCX DiMouseWheel6.zip

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut


    bon il va falloir que je me réveille une mise à jour de la page sources VB devient de plus en plus nécessaire !

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Par défaut
    Formidable !

    je l'ai juste adapté à ma Flexgrid (en jouant avec la propriété .TopRow) et hop, ma grille défile à la roulette dans les deux sens ! Du pain béni !

    Merci ! Merci ! Merci !

    ps : petite coquille à corriger sur le ligne If CtrIndex="" Then (C'est CtrlIndex)

    Edit : Voilà, adaptée à un MsFlexGrid nommé Grid1

    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
    Private Sub Wheel1_WheelRotate(ctrl As Object, Delta As Long, X As Long, Y As Long)
        Dim CtrlIndex As String
        Dim CtrlName As String
        '
        On Error Resume Next
        '
        CtrlIndex = CStr(ctrl.Index)
        '
        On Error GoTo 0
        '
        If CtrlIndex = "" Then
            CtrlName = ctrl.Name
        Else
            CtrlName = ctrl.Name & "(" & CtrlIndex & ")"
        End If
        '
        If ctrl.Name = "Grid1" Then
            '
            If Delta > 0 Then
                If ctrl.TopRow < ctrl.Rows Then
                    ctrl.TopRow = ctrl.TopRow + 1
                End If
            Else
                If ctrl.TopRow > 0 Then
                    ctrl.TopRow = ctrl.TopRow - 1
                End If
            End If
            '
        End If
        '
        Debug.Print CtrlName, Delta, X, Y
        '
    End Sub

  4. #4
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Coquille corrigée

    Tu n' as pas besoin de toutes les lignes que j'avais mis en exemple, tu peux simplifier en
    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
    Private Sub Wheel1_WheelRotate(ctrl As Object, Delta As Long, X As Long, Y As Long)
        If ctrl.Name = "Grid1" Then
            '
            If Delta > 0 Then
                If ctrl.TopRow < ctrl.Rows Then
                    ctrl.TopRow = ctrl.TopRow + 1
                End If
            Else
                If ctrl.TopRow > 0 Then
                    ctrl.TopRow = ctrl.TopRow - 1
                End If
            End If
            '
        End If
    End Sub

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonsoir,
    J'ai télécharger le zip, mais j'ai constaté qu'il ne fonctionne pas sous Vista, comme beaucoup d'autres OCX d'ailleurs, (j'en sais quelques choses).
    Heureusement j'ai encore mon portable en XP, j'ai donc pu tester que c'est bien à cause de Vista.
    Exemple: dans un OCX qui comportait un PictureBox avec un BMP et bien le BMP n'a pas suivi, ce n'était pas grave mais j'ai du remettre le BMP dans la PictureBox sous Vista et cela a fonctionné.
    A titre de renseignement je te met le Log qui a été "pondu" sous vista.
    Ligne 46: La classe DiFtpCli6.FtpCli du contrôle FtpCli1 n'est pas une classe de contrôle chargée.
    Ligne 49: Le nom de la propriété _extentx dans FtpCli1 est incorrect.
    Ligne 50: Le nom de la propriété _extenty dans FtpCli1 est incorrect.
    Ligne 51: Le nom de la propriété remotehost dans FtpCli1 est incorrect.
    Ligne 52: Le nom de la propriété username dans FtpCli1 est incorrect.
    Ligne 53: Le nom de la propriété password dans FtpCli1 est incorrect.

    J'ai bien l'impression que Vista nous réserve encore bien des surprises.
    Cordialement.

    PS: je n'ai pas encore examiné le code, je trouve juste, au premier abord que le déplacement est lent, mais peut-être qu'il y a moyen d'accélerer, j'examinerai cela un peu plus tard.

  6. #6
    Membre éprouvé Avatar de Angath
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 140
    Par défaut
    Merçi pour cet OCX

    Juste une petite remarque, dans le cas d'une flexgrid avec des lignes fixes, ça plante, il faut tenir compte de la propriété FixedRows :

    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
    Private Sub Wheel1_WheelRotate(ctrl As Object, Delta As Long, X As Long, Y As Long)
        If ctrl.Name = "Grid1" Then
            '
            If Delta > 0 Then
                If ctrl.TopRow < ctrl.Rows - ctrl.FixedRows Then
                    ctrl.TopRow = ctrl.TopRow + 1
                End If
            Else
                If ctrl.TopRow > ctrl[B].FixedRows Then
                    ctrl.TopRow = ctrl.TopRow - 1
                End If
            End If
            '
        End If
    End Sub

  7. #7
    Membre éclairé Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Par défaut
    Merci pour la source Delbeke

    Je suis curieux de savoir en quoi est codé DiMouseWheel6.ocx (je pense que c'est du C, vous me corrigez sinon ), le principe de son fonctionnement (hook ? :je l'ai dis et je ne connais pas très bien que celà veux dire ...)..

    Je vais étudier cette année un "peu" de programmation système ce qui explique ma curiosité

    Merci d'avance..

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/02/2009, 00h05
  2. Récupérer les évènements clavier dans une jsp
    Par cereal dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 19/10/2008, 18h45
  3. Réponses: 1
    Dernier message: 29/06/2007, 12h03
  4. Réponses: 3
    Dernier message: 05/11/2005, 23h50
  5. [JACOB] récupérer les événements d'objet COM
    Par zlavock dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 12/05/2005, 13h07

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