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

Composants VCL Delphi Discussion :

[PopupMenu] comment savoir qui le lance?


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut [résolu] [PopupMenu] comment savoir qui le lance?
    Bonjour,

    j'ai un TjvArrowButton (un bouton avec une petite flèche à droite). La flèche declenche un PopupMenu. Comme je rempli dynamiquement le popup dinfo venant d'une tablen j'assigne aussi une procedure click au OnClick du PopupMenu.

    Jusque là, cela fonctionne. mais j'ai 4 ArrowButton liés au même PopupMenu car il sont les mêmes. J'aimerais dans ma procedure click savoir quel ArrowButton a été clické...

    Le Owner du PopupMenu, c'est le Form. Donc comment savoir sur quel arrow button j'ai clické? PopupComponent ne fonctionne pas (il est à nil)

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 897
    Points : 6 024
    Points
    6 024
    Par défaut
    Dans l'entête de la proc OnCLick, il n'y a pas un Sender?

    Auquel cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (sender as TjvArrowButton).name='ArrowButton1' then...
    Non ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Hélas, le sender est la form...

  4. #4
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par eponette
    Hélas, le sender est la form...
    ???? De quel clic tu parles ? Parce que si c'est le clic sur le menu, le sender est un TMenuItem
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  5. #5
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Oui. Mais dans les deux cas, je n'arrive pas à avoir une référence de l'objet ArrowButton pour savoir lequel des 4 je dois mettre à jour.

  6. #6
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Pourquoi tu ne gère pas le clic sur le bouton directement ?
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  7. #7
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par MD Software
    Pourquoi tu ne gère pas le clic sur le bouton directement ?
    C'est cela que j'essaie de faire. Il y a un evénement OnDrop quand on click sur la flèche. Là, le sauve quel composant a généré l'événement. Je crois que cela fonctionne. Mais maintenant, j'ai un problème pour savoir sur quel menu je click (puisque programatiquement, je lie le même onclick à chque TMenuItem du PopupMenu. Est-ce que on peut faire ceci

    PopupMenu.Items[PopupMenu.Items.Count -1].OnClick := TypeTelClick(sender, cation);

    ou quelque-chose de similaire, pour pouvoir envoyer avec le onclick le libellé du menu?

  8. #8
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Je comprend rien, puisque tu le sauves au moment du clic sur le bouton, pourquoi tu ne t'en sert pas lors du clic sur le menu
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  9. #9
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut
    Désolé, je mélange deux choses. D'abord, je ne trouvais pas comment savoir qui était clické. Grace au ondrop, je peux sauver cela, donc mon premier problème est résolu...

    Mais maintenant, puis que tous les MenuItem ont le même onclick, j'essaie de savoir comment avoir le caption de celui qui a été clické (il n'y a pas de IndexItem pour les popup menu...)

    Est-ce plus clair

  10. #10
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Utilise le sender !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (sender as TItemMenu).name='Item1' then...
    Tu peux utiliser name, caption, ou mieux, tag.
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  11. #11
    Membre habitué
    Inscrit en
    Mai 2005
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 258
    Points : 156
    Points
    156
    Par défaut


    Merci

  12. #12
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Je reprend ta première réflexion tu peut utiliser PopupMenu1.PopupCompoenent mais cette fois ci c'est dans les éléments du menus que tu décide quelle action faire en fonctions de quels button.
    Tu pose tes bouttons tu leurs affectes tous le même popupmenu.
    dans l'événement du click d'un items de ton popupmenu tu teste quel boutton a fait surgir le popupmenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /// Click sur un Item
    if TButton(PopupMenu1.PopupComponent).Caption = 'Boutton1' then
    begin
    end
    else
    if TButton(PopupMenu1.PopupComponent).Caption = 'Boutton2' then
    begin
    end
    ou si tu les distingues par des tag ça sera mieux.
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

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

Discussions similaires

  1. [Memoire] Comment savoir qui utilise la mémoire?
    Par zoltix dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 31/12/2007, 18h55
  2. Réponses: 2
    Dernier message: 08/08/2006, 17h31
  3. Comment savoir à qui appartient le rang d'IP ?
    Par MaTHieU_ dans le forum Développement
    Réponses: 4
    Dernier message: 30/07/2006, 00h07
  4. comment savoir qui est connecté sur les db
    Par zoltix dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/05/2006, 17h35
  5. Comment savoir qui locke un enrengistrement
    Par Vroom dans le forum Oracle
    Réponses: 10
    Dernier message: 21/09/2005, 13h16

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