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

Delphi Discussion :

manipulation des "TPopupMenu"


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut manipulation des "TPopupMenu"
    Bonjour,

    J'ai un peu de mal à manipuler les "TPopupMenu",
    Par exemple, je voudrais inserrer l'Item d'un TPopupMenu dans le MenuItem d'un deuxième TPopupMenu.
    Au niveau du codage cela ne pose, à priori, aucun pb :

    MenuItem1.Add(MenuItem2);

    avec PopupMenu1 -> MenuItem1
    PopupMenu2 -> MenuItem2

    Il me répond systématiquement que le "menu inséré deux fois"

    J'ai essayé de créer dynamiquement un TMenuItem, mais ça ne donne carrement rien, bien que cela ne plante pas.

    Est-ce que cela parle à quelqu'un ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    je supose que tpopmenu sont creer au lancement ?
    as tu essayé simplement de changer le parent ?

    @+ Phil

  3. #3
    Membre confirmé Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Par défaut
    Attention il faut changer le nom du nouveau item inséré dans PopupMenu2,
    Voici une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var MItem: TMenuItem;
    begin
        MItem:=TMenuItem.Create(Self);
        MItem.Name:=PopupMenu1.Items[0].Name+'x';
        MItem.Caption:=PopupMenu1.Items[0].Caption;
        PopupMenu2.Items.Add(MItem);
        Button3.PopupMenu:=PopupMenu2;
    end;

  4. #4
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Citation Envoyé par anapurna
    salut

    je supose que tpopmenu sont creer au lancement ?
    as tu essayé simplement de changer le parent ?

    @+ Phil
    Oui ils sont créés à la conception mais apparemment la propriété "Parent" d'un TMenuItem est en lecture seule.

    Citation Envoyé par abdelghani_k
    Attention il faut changer le nom du nouveau item inséré dans PopupMenu2,
    Merci, j'essai tout de suite.

  5. #5
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Non, décidemment, quoi que je fasse, il me répond :
    Menu inséré deux fois ?!

    J'aimerai bien savoir où est l'autre...

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut


    c'est un probleme de ressource pour ce faire tu doit l'enlever du premier popup et ensuite l'inserer dens le deuxieme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     var
       Item: TMenuItem;
      ...
        Item := PopupMenu1.Items[I];
        PopupMenu1.Items.Delete(I);
        PopupMenu2.Items.Add(Item);
    @+ Phil

  7. #7
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    Bonjour, et merci pour votre aide.

    Désolé pour le temps de réponse, j'étais sur un autre problème.
    Je n'y arrive décidément pas avec ces PopupMenus.
    J'ai beau essayer ce que je veux, il me répond "Menu inséré deux fois".

    Je crée 2 TPopupMenu à la conception : PopupMenu1 et PopupMenu2
    je crée un TMenuItem dans PopupMenu1 : Activite
    et un TMenuItem dans PopupMenu2 : Peche

    Je voudrais, à l'excution, insérer le contenu de Peche dans PopupMenu1 en tant que sous-menu de Activite, ou, en tout cas recopier les sous-menus Peche dans Activite.

    Que je fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
      Activite.Add(Peche);
    end;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var tutu: TMenuItem;
    begin
      tutu := TMenuItem.Create(Self);
      tutu := Peche;
      Activit1.Add(tutu);
    end;
    Il me répond "Menu inséré deux fois"

    Si cela parle à quelqu'un... Merci d'avance.

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    as tu lut ma reponse il te faut le supprimer du premier pour pouvoir l'inserer dans le second

    @ +Phil

  9. #9
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Par défaut
    ben oui, mais si je le supprime, il n'existe plus, comment je peux l'insérer après l'avoir supprimé ?

    Par contre, je me rends compte que je n'ai pas essayé de le renommer comme le suggère abdelghani_k.

    J'ai tellement essayé de trucs !

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut


    as tu bien regarder mon code ?

    bon je vais l'expliquer ce seras paut etre plus clair

    on definit on variable de type TMenuItem pour sans servir de tampon ou
    variable temporaire c'est comme tu veut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Item := PopupMenu1.Items[i];
    j'affecte donc le menu que je veut dans ma variable temporaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        PopupMenu1.Items.Delete(I);
    je supprime l'item du menu source pour eviter d'avoir ce fameux message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PopupMenu2.Items.Add(Item);
    je recopie l'item dans le menu destination

    @+ Phil

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