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 :

Parcourir les éléments dans TMainMenu


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Parcourir les éléments dans TMainMenu
    Bonjour à tous,

    Je n'arrive pas à parcourir les éléments d'un TMainMenu. Par exemple si j'ai un menu fichier, et un menu Option, je souhaite boucler sur les éléments contenus dans Fichier et dans Option....

    Avez-vous une diée ?
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    TMainMenu a une propriétés Items qui est un TMenu, tu dois boucler dessus comme dans ce sujet
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Je dois passer à côté de quelque chose...

    je fais un bête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ii := 0 to TMainMenu1.Items.Count - 1 do
      ShowMessage(TMainMenu1.Items[ii].Caption);
    et là je boucle sur mes en-tête du menu, moi je souhaite boucler dedans...

    Alors j'ai bien lu,
    TMainMenu a une propriétés Items qui est un TMenu
    mais comment accéder à cette propriété ???

    Merci

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Il faut faire une recursivité pour avoir l'intrégalité des menus

    en itératif, sur 2 niveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ii := 0 to TMainMenu1.Items.Count - 1 do
    begin  
      ShowMessage(TMainMenu1.Items[ii].Caption);
      for ii2 := 0 to TMainMenu1.Items[ii].Count - 1 do
        ShowMessage(TMainMenu1.Items[ii].Items[ii2].Caption);
    end;
    la récursivité te permettra de gérer un nombre infini de niveau, l'imbrication de boucle for, c'est juste pour la démo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowAllMenu(MainMenu1.Items);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      procedure ShowAllMenu(AItems: TMenuItem);
      var
        i: integer;
      begin
        for i := 0 to AItems.Count - 1 do
        begin
          ShowMessage(AItems.Items[i].Caption);
          ShowAllMenu(AItems.Items[i].Items);
        end;
      end;


    Citation Envoyé par kwekwe Voir le message
    Alors j'ai bien lu, mais comment accéder à cette propriété ???i
    Tu utilises déjà Items du TMainMenu1 mais les Items sont des TMenu qui ont aussi des Items qui sont des TMenu ... récursion !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    En effet, il me manquant le côté récursif... Merci pour ton aide.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    retrété programmeur
    Inscrit en
    Septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retrété programmeur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    bonjour
    sujet intéressant et utile mais comment fait on pour savoir si le menu a des sous menu car quand on lit le menu un message apparait
    signalant que l'indice est hors limite

    merci a celui qui relit le sujet et qui à la réponse.

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Cela se fait implicitement avec le code fourni AItems.Count
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. [2.x] parcourir les éléments d'un formulaire dans twig
    Par Sergei75 dans le forum Symfony
    Réponses: 10
    Dernier message: 28/10/2011, 19h47
  2. Réponses: 1
    Dernier message: 26/07/2007, 10h57
  3. Comment parcourir les éléments d'un panel en javascript
    Par shirya dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/01/2007, 17h18
  4. parcourir les éléments d'une table
    Par Daniel MOREAU dans le forum Access
    Réponses: 1
    Dernier message: 14/01/2007, 17h50
  5. Réponses: 10
    Dernier message: 27/03/2006, 18h38

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