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

IHM Discussion :

Récupérer nom du bouton cliqué


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2011
    Messages : 136
    Points : 68
    Points
    68
    Par défaut Récupérer nom du bouton cliqué
    J'ai un problème assez ardu :
    Je suis dans un subform S1 (voire dans la subform d'une subform). Dans cette subform, l'utilisateur modifie quelques champs textbox...
    Je clique sur un bouton de la form mère ou d'une autre form ouverte.
    L'événement Form_BeforeUpdate se déclenche vu que des données de la subform S1 ont été modifiées.
    J'aimerais alors récupérer le nom du bouton cliqué de la form mère ou d'une autre form ouverte.
    Comment faire ?

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut PatSan,

    on ne peut pas déterminer l'origine de l'événement sans que celle-ci ne le transmette.
    le plus simple serait que chaque déclencheur, tes boutons, s'identifient par exemple via une variable globale du genre: declencheur="bouton1"
    (et reseté qd celle-ci est traitée)


  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Déjà il faudrait expliquer pourquoi tu veux récupérer ce nom.

    Philippe

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2011
    Messages : 136
    Points : 68
    Points
    68
    Par défaut
    Vodiem,
    Impossible d'utiliser une variable globale. L'événement Form_BeforeUpdate se déclenche avant un quelconque code dans le bouton cliqué.

    Philippe,
    Je veux pouvoir ne pas exécuter le code du Form_BeforeUpdate suivant le bouton cliqué.

    Je pense que les infos du boutons cliqués sont stockés par Windows mais je ne vois pas comment y accéder...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Re

    Pour moi la meilleure solution est stocker dans une variable de type booléen si oui ou non une action devra se faire.

    Donc déclaration d'une variable booléenne en début de module et tu inialise celle-ci sur le load de ton formulaire.

    Tu la mets par exemple à vrai (True) quand tu veux que l'évènement s'enclenche et à False si non (à faire sur le click de chaque bouton).

    Ensuite dans le before Updade tu regardes la valeur et tu peux annuler l'évènement avec le Cancel = True.

    Philippe

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut Philippe ,

    Citation Envoyé par PatSan
    Je pense que les infos du boutons cliqués sont stockés par Windows mais je ne vois pas comment y accéder...
    => "Je pense mal"
    ce n'est pas ainsi que le système fonctionne: un évènement produit un message qui lui sera dispatché, voir diffusé, et chaque "gestionnaire événementiel" concerné vérifie s'il doit traiter le message. Tu n'es pas dans un appel de procédure ou effectivement le système empile le pointeur de l'appelant où il serait hypothétiquement possible de retrouver l'appelant.

    Citation Envoyé par PatSan
    L'événement Form_BeforeUpdate se déclenche avant un quelconque code dans le bouton cliqué
    ce n'est pas cohérent avec:
    Citation Envoyé par PatSan
    Je clique sur un bouton de la form mère ou d'une autre form ouverte.
    L'événement Form_BeforeUpdate se déclenche...
    c'est bien le clic sur le bouton qui déclenche l'événement BeforeUpdate non ?
    dans ce cas suit l'explication de Philippe si cela te parait plus clair.
    il m'a plagié en changeant le type en boolean... (on réglera nos comptes plus tard Philippe ! )

    Bonne continuation.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par vodiem Voir le message
    il m'a plagié en changeant le type en boolean... (on réglera nos comptes plus tard Philippe ! )
    Effectivement, c'est un plagiat détourné (je viens juste de relire ton message), méa culpa

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2011
    Messages : 136
    Points : 68
    Points
    68
    Par défaut
    J'ai fait des tests et voici ce qui en résulte : quand on clique sur le bouton, l'événement Form_BeforeUpdate de la subform se déclenche avant qu'un quelconque code du bouton ne s'exécute...
    Donc impossiblité d'utiliser un booléen ou une variable d'un autre type...
    Je suis dans une impasse...

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Tu mets par exemple la variable globale: declencheur="bouton1" en début de ligne de l'évènement clic (à faire respectivement sur le click de chaque bouton).

    Ensuite dans le before Updade tu testes sa valeur et tu peux annuler l'évènement avec le Cancel = True.

    ...c'est de bonne guerre Philippe. :p
    je t'en veux pas : faut dormir la journée qd on dort pas la nuit. ;P

    Citation Envoyé par PatSan
    Donc impossiblité d'utiliser un booléen ou une variable d'un autre type...
    Je suis dans une impasse...
    bon c'est compliqué de t'expliquer, ce qui pour nous, parait évident et de ne pas comprendre ce que tu ne comprends pas en ces termes.
    à moins qu'il y a qqc qui nous échappe dans ton explication, au quel cas le plus simple et rapide serait de nous poster un exemple compressé, concis du pb que tu rencontres.


  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2011
    Messages : 136
    Points : 68
    Points
    68
    Par défaut
    Vodiem,
    Ton explication est limpide. Je la comprends très bien, je suis informaticien de métier...
    Le fait est que l'assignation de la variable globale dans le bouton de la form se fait APRÈS l'exécution du Form_beforeUpdate de la subform. Par conséquent, le test de cette variable globale est vouée à l'échec.
    Je ne suis peut-être pas clair, désolé.
    Poster le code serait un peu compliqué...
    Je suis en train de regarder du côté des API de Windows mais je n'ai pas beaucoup d'espoirs...

  11. #11
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Citation Envoyé par PatSan
    Ton explication est limpide
    merci, tu commences à me plaire... ^^

    Citation Envoyé par PatSan
    je suis informaticien de métier
    bon, tant qu'à faire les présentations : Philippe est moi nous sommes informaticiens de naissance.
    et mon doigt me dit que t'es même Développeur Web et tu code en JS. ^^

    Citation Envoyé par PatSan
    Je suis en train de regarder du côté des API de Windows mais je n'ai pas beaucoup d'espoirs...
    je vois que la confiance règne
    mais tu as raison on dit tellement de c... sur web, enfin pas trop sur DVP qd même. merci à nos modérateurs au passage.

    Citation Envoyé par PatSan
    Je ne suis peut-être pas clair, désolé.
    Poster le code serait un peu compliqué...
    C'est pas grave. Je pense comprendre ton soucis : en fait ce n'est pas seulement quand tu cliques sur les boutons que le beforeUpdate se déclenche, non ? c'est pas plutôt quand tu perds le focus du sous formulaire par hasard ?
    parce que dans ce cas effectivement c'est différent.

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2011
    Messages : 136
    Points : 68
    Points
    68
    Par défaut
    Oui effectivement Vodiem. Le Form_BeforeUpdate se déclenche de manière générale dès que le focus sur l'enregistrement de la subform est perdu. Dans mon cas, c'est en cliquant sur un bouton...
    Si tu as une idée sur mon pb, je suis preneur !

    Pour répondre à tes autres questions :
    - je suis aussi développeur web et utilise le JS, PHP. (tu as sûrement vu mes autres posts ). En ce moment, je travaille sur un framework Access pour des applis de gestion de stock...à mes heures perdues. Quand on a le virus de l'informatique, on l'a pour la vie !!!
    - oui, il n'y a pas beaucoup de c... sur DVP. C'est la raison pour laquelle je l'utilise quand j'ai un soucis.

  13. #13
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Citation Envoyé par PatSan
    Si tu as une idée sur mon pb
    j'ai des idées aussi sur les solutions si t'a t'intéresse.

    étant donné que le beforeUpdate se déclenche avant même que le bouton soit identifié je vois plusieurs options:
    les plus simple:
    > reconcevoir l'IHM.
    > inverser le traitement: dans le beforeUpdate signaler s'il y aura une maj et dans code du bouton annuler la saisie.
    > sur la perte de focus si on est en édition annuler la saisie, la stocker pour la valider dans l'événement bouton. utiliser éventuellement un formulaire avec des contrôles indépendants.
    le plus moins simple (ta première initiative):
    > sur le beforeUpdate identifier le bouton survolé par la souris. idéalement vérifier s'il y a un clic dessus (là c'est plus délicat vu que l'événement ne s'est pas encore produit il faudrait aller le chercher dans la pile des messages) mais on peut raisonnablement simplifier ce pb en supposant que la perte de focus au survol d'un bouton provient d'un clic et s'il y a pas eu de saisie clavier (et en croisant fort les doigts qu'un événement externe dans windows ne déclenche la perte de focus pour pas avoir à le gérer).
    donc après avoir récupéré les coordonnées de la souris via API, du sous form déterminer le formulaire principal actif et boucler sur tous les controles (incluant sous form) afin de trouver le control survolé. ben oui : il n'existe pas de handle sur un bouton sous access.

    voilà ce qui me vient en premier à l'esprit.
    pour le moment je te dirais que le premier choix du plus simple est un très très bon choix.

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2011
    Messages : 136
    Points : 68
    Points
    68
    Par défaut
    Je crois que je vais opter pour la première solution, histoire de ne pas me retrouver avec une usine à gaz qui me conduirait à une maintenance difficile et des effets de bord non voulus.
    Merci pour t'être penché sur la question.

  15. #15
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Je crois que je vais opter pour la première solution, histoire de ne pas me retrouver avec une usine à gaz qui me conduirait à une maintenance difficile et des effets de bord non voulus.
    Je reconnais là un développeur sage et aguerri : t'iras loin mon p'tit.


Discussions similaires

  1. Récupérer nom de JMenuItem cliqué
    Par alfhcg dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 01/11/2012, 20h09
  2. Récupérer nom d'occurrence du bouton cliqué.
    Par darkageof62 dans le forum Flash
    Réponses: 2
    Dernier message: 02/12/2010, 18h19
  3. [XL-2007] Connaitre le nom du bouton cliqué
    Par cityhunter33 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/10/2010, 19h57
  4. Réponses: 5
    Dernier message: 03/04/2006, 16h50
  5. [PHP-JS] Connaître le nom du bouton submit cliqué
    Par fabrice1596 dans le forum Langage
    Réponses: 6
    Dernier message: 08/03/2006, 08h59

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