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

Access Discussion :

Evénement Click de l'objet CommandBarButton [À faire]


Sujet :

Access

  1. #1
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut Evénement Click de l'objet CommandBarButton
    Origine du sujet : http://www.developpez.net/forums/viewtopic.php?t=332820

    Citation Envoyé par =JBO=
    Quant à l'événement [Click] d'un CommandBarButton, j'ai pu constater des comportements bizarres.

    Exemple:
    en VBA on crée plusieurs barres d'outils personnalisées, associées à des formulaires distincts.
    Quand l'utilisateur clique sur le bouton d'index n dans une barre d'outils particulière, alors l'événement Click est déclenché sur tous les boutons d'index n de toutes les barres d'outils personnalisées !!!

    (expérience vécue et vérifiée tous les jours dans Access 2000)

    Alors prudence

    Merci pour ce retour d'expérience.

    Il faudra que je fasse des tests un de ces jours. D'ailleurs je vais le faire tout de suite.


    EDIT : tests ok sous office XP avec services packs à jour.

    Mon test : j'ai créé deux barres d'outils "perso1" et "perso2" chacune contenant 3 boutons.

    Sur chargement d'un formulaire, j'ai instancié un seul des contrôles. Puis je récupére bien son événement Click, uniquement lorsque je clique dessus.
    (\ _ /)
    (='.'=)
    (")-(")

  2. #2
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Voici le code testé qui fonctionne très bien :
    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
    Dim WithEvents A As Office.CommandBarButton
    Dim WithEvents Y As Office.CommandBarButton
     
    Private Sub Form_Load()
    Set A = CommandBars!perso1.Controls("B")
    Set Y = CommandBars!perso2.Controls("Y")
    End Sub
     
    Private Sub A_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    MsgBox Ctrl.Parent.Name
    End Sub
     
    Private Sub Y_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    MsgBox Ctrl.Parent.Name
    End Sub
    (\ _ /)
    (='.'=)
    (")-(")

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Sous Office XP les résultats sont corrects !?

    Vais-je devoir changer de version ???

    Merci d'avoir effectuer le contrôle.

    Cordialement,
    =JBO=

  4. #4
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Vais-je devoir changer de version ???
    Possible...
    Car je sais que la mise en forme conditionnelle (tests réalisés avec Tofalu) est absoluement catastrophique sous Access 2000. Quoique nous avons testé sans services packs.
    (\ _ /)
    (='.'=)
    (")-(")

  5. #5
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Je viens de tester mon code sur 2000. Il fonctionne très bien.

    =JBO=, quel code ne fonctionne pas chez toi ?
    (\ _ /)
    (='.'=)
    (")-(")

  6. #6
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Bon, je vais refaire des tests car je me suis peut-être un peu précipité :
    Citation Envoyé par =JBO=
    en VBA on crée plusieurs barres d'outils personnalisées, associées à des formulaires distincts.
    Je n'ai pas créé mes commandbar en vba.
    Je re-teste...


    EDIT : tout fonctionne parfaitement chez moi. Donc j'aimerais bien connaître ton code.
    (\ _ /)
    (='.'=)
    (")-(")

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut Qui ça intéresse ???
    Je viens de tester mon code sur 2000. Il fonctionne très bien.
    Exact, j'ai vérifié que ton code fonctionne parfaitement.
    =JBO=, quel code ne fonctionne pas chez toi ?
    Tu veux vraiment savoir ?

    Il s'agit d'une utilisation particulière des barres d'outils.

    Dans une application MDB Access 2000, les utilisateurs disposent d'environ 30 Forms, affichables façon MDI, pouvant être instanciés plusieurs fois, et complétés de barres d'outils générées à la volée et qui leur sont associées via la propriété ToolBar.
    Selon la commande de menu invoquée, l'instance d'un Form peut être configurée de différentes manières (colonnes cachées, boutons supplémentaires ajoutés dans la barre d'outils, source de données, filtrage des données, etc.).

    Point important: les barres d'outils mémorisent un ensemble de valeurs spécifiques à un Form, ce qui interdit de les partager entre plusieurs Forms.

    Tu l'as compris, le nombre de configurations particulières multiplié par le nombre de Forms, ça fait beaucoup de cas et beaucoup de barres d'outils. Alors pour être efficace, j'ai développé un ensemble de classes dont les instances servent à configurer et piloter les Forms de l'application (en évitant de dupliquer du code ).
    Ces instances sont des "contrôleurs de Forms" et référencent directement (withevents) les boutons de la barre d'outils associée au Form.

    C'est dans ce contexte que les déclenchements de Click intempestifs ont lieu: l'appui sur un bouton d'une barre d'outils spécifique est répercuté vers tous les contrôleurs de Forms au lieu de se limiter à celui qui lui est associé.

    Dernière précision: les barres d'outils sont générées sur une base commune (même boutons aux mêmes positions, mêmes Captions) puis complétées en fonction des instances de Form auxquelles elle sont ensuite associées.

    L'application fait plus de 20 Mo . Bien sûr les données sont dans une autre base en réseau.
    FIN

  8. #8
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Ouf, ben ça me rassure ! Si tu utilises plusieurs instances d'une classe Form_X c'est déjà moins banal comme cas.

    Mes derniers tests concernaient des forms "bien distincts".
    Donc je présumme que je devrais réussir à reproduire les dysfonctionnement sur n'importe quelle version.

    Ce qui m'intéresse, c'est de savoir si c'est vraiment un bug où si c'est "normal". En effet les événements de classes ne sont pas toujours à la hauteur de nos attentes mais ce n'est pas pour autant un bug.
    Enfin tu vois ce que je veux dire...

    Sur ce je vais relire ton message ^précédant pour essayer de bien cerner le pb.
    Et je vais diviser le thread aussi.
    (\ _ /)
    (='.'=)
    (")-(")

  9. #9
    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 : 40
    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
    Peut être un problème au niveau de la portée des objets. Veille bien à ne rien avoir en public

    Peut être ça n'aura aucun rapport avec ta question mais j'aurais au moins eu le plaisir à répondre à un message ouvert par FRED 8)

  10. #10
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par Tofalu
    Peut être un problème au niveau de la portée des objets. Veille bien à ne rien avoir en public
    =JBO= ne revient que la semaine prochaine je crois. Mais d'ici là j'aimerais recreer son problème afin de voir si c'est une limite ou un vrai bug (de version ?).

    A ce moment on pourra voir la question de la portée des objets.
    (\ _ /)
    (='.'=)
    (")-(")

Discussions similaires

  1. Evènement click sur un DataGridViewButtonColumn
    Par OLman135 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/07/2008, 16h10
  2. Evénement "click" sur contrôle ImageButton
    Par Nixar dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/12/2007, 22h50
  3. Contrôle Onglet et Evénement Click
    Par vandrie dans le forum IHM
    Réponses: 2
    Dernier message: 21/10/2007, 11h06
  4. [Access 2000] Evénement click sur groupe d'option
    Par Mariboo dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2006, 14h52
  5. Réponses: 5
    Dernier message: 12/04/2005, 13h54

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