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

VBA Access Discussion :

Récupérer le nom du controle survolé par la souris [AC-2010]


Sujet :

VBA Access

  1. #1
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut Récupérer le nom du controle survolé par la souris


    Je cherche à récupérer le nom de mon controle lorsque celui-ci est survolé par la souris.
    J'ai essayé par l'intermédaire de l'évènement : sur souris déplacée de récupérer le nom du controle actif, mais cela n'est pas aussi simple.
    Peut-on, par les coordonnées de la souris, retrouver le controle survolé et ainsi récuperer son nom ?

    Merci pour vos suggestions

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour Jean,

    Ne suffit-il pas de prévoir un peu de code dans l'événement Sur souris déplacée des contrôles dont tu veux récupérer les noms.




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Compare Database
    Option Explicit
     
    Private Sub Texte0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      Me.txtNomDuSurvole = Me.Texte0.Name
    End Sub
    Private Sub Texte2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      Me.txtNomDuSurvole = Me.Texte2.Name
    End Sub
    Private Sub Texte4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      Me.txtNomDuSurvole = Me.Texte4.Name
    End Sub

    N.B. Celui qui est survolé, n'est pas nécessairement celui qui est actif !

  3. #3
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Claude

    Merci pour ta réponse, mais cette facon de faire je l'avais faite.
    Ce que je souhaitais c'était écrire une procédure générale (j'ai 210 controles dans mon formulaire ! )
    Je pense qu'il va falloir passer par 210 sub

    Merci pour le temps que tu as pris pour me repondre.

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Un autre solution serait de définir une zone de proximité dans laquelle on considère que la souris est presque dans le contrôle, genre un cadre de 50 twips. Ainsi on peut utiliser l'évènement mouvemove des sections de formulaires.

    Exemple :

    Code de clsControl :

    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
    Private Const APPROX = 50
     
    Private varCtl As Control
     
    Sub init(octl As Control)
    Set varCtl = octl
    End Sub
     
    Function estDedans(ByVal positionX As Single, ByVal positionY As Single) As Boolean
    'On Error Resume Next
    estDedans = ((positionX + APPROX) > varCtl.Left) And _
                ((positionX - APPROX) < varCtl.Left + varCtl.Width) And _
                ((positionY + APPROX) > varCtl.Top) And _
                ((positionY - APPROX) < varCtl.Top + varCtl.Height)
    End Function
     
    Property Get Nom() As String
    Nom = varCtl.Name
    End Property
    Code du form :

    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
    34
    Dim colControl As Collection
     
    Private Sub Détail_Click()
     
    End Sub
     
    Private Sub Détail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    On Error Resume Next
    Dim oclsControl As clsControl
    For Each oclsControl In colControl
        If oclsControl.estDedans(X, Y) Then
            Me.Étiquette3.Caption = oclsControl.Nom
            Exit Sub
        End If
    Next oclsControl
        Me.Étiquette3.Caption = "Sans contrôle"
    End Sub
     
    Private Sub Form_Load()
    Dim octl As Control
    Dim oclsControl As clsControl
    Set colControl = New Collection
     
    For Each octl In Me.Controls
        Set oclsControl = New clsControl
        oclsControl.init octl
        colControl.Add oclsControl
    Next octl
    End Sub
     
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     
     
    End Sub

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

Discussions similaires

  1. [XL-2010] Rechercher et récupérer le nom d'un fichier par rapport à la valeur d'une cellule
    Par froggy39 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2014, 11h15
  2. Récupérer le control pointé par la souris
    Par Cedric33 dans le forum C#
    Réponses: 5
    Dernier message: 23/10/2008, 13h14
  3. récupérer le nom du fichier cliqué par la souris
    Par PH_DEMS dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 04/06/2008, 14h06
  4. Récupérer le nom d'un bouton par son Caption
    Par Duan dans le forum Delphi
    Réponses: 5
    Dernier message: 30/04/2007, 12h04
  5. Réponses: 3
    Dernier message: 13/12/2006, 14h03

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