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

C++Builder Discussion :

Créer un sous-menu dynamiquement


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Créer un sous-menu dynamiquement
    Bonjour,

    Je cherche le moyen de créer un sous-menu dynamiquement à un TMenuItem. Comme on pourrait le faire dans le concepteur de menus

    Je vois bien un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TMenuItem *menu;
    menu->Caption = "Mon menu";
    MainMenu->Items->Add(menu);
    Mais àa ne marche pas

    PurL

  2. #2
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Essaye d'adapter ceci:
    code qui marche dans mon cas:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Query->Close();
     Query->SQL->Clear();
     Query->SQL->Add("SELECT DISTINCT TM_TYPEMENU FROM TYPE_MARQUE ORDER BY 1");
     Query->Prepared = true;
     Query->Open();//récupération des différents types de menu existants
     Application->ProcessMessages();
     for (int i = 0;i < Query->RecordCount;i++)
     {
      TMenuItem* Menu = new TMenuItem(PopupCreation);
      Menu->Caption = Query->FieldByName("TM_TYPEMENU")->Text;
      PopupCreation->Items->Add(Menu);//création des items dans le popup
      Query->Next();
     }
     Query->First();
     
     for (int i = 0;i < Query->RecordCount;i++)
     {
      QuerySM->Close();
      QuerySM->SQL->Clear();
      QuerySM->SQL->Add("SELECT TM_NOM FROM TYPE_MARQUE WHERE TM_TYPEMENU="+QuotedStr(Query->FieldByName("TM_TYPEMENU")->Text)+" ORDER BY 1");
      QuerySM->Prepared = true;
      QuerySM->Open();//récupération des différents types de marque par type de menu
      Application->ProcessMessages();
      for (int z = 0;z < QuerySM->RecordCount;z++)
      {
       TMenuItem* Menu = new TMenuItem(PopupCreation);
       Menu->Caption = QuerySM->FieldByName("TM_NOM")->Text;
       Menu->OnClick = ActionPopup;
       PopupCreation->Items->Items[i]->Add(Menu);//création des items dans le popup selon le menu
       QuerySM->Next();
      }
      Query->Next();
     }
    + + +

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Merci pour ta réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PopupCreation->Items->Add(Menu);//création des items dans le popup
    ca marche uniquement pour un TMainMenu ou un TPopupMenu.
    On ne peut pas faire (apparement) un "Items->Add(menu)" sur un TMenuItem

    Or c'est bien un menu (sous-menu) à un TMenuItem d'un TMainMenu que je veux créé (rajouter une petite fleche noir à coté)

    PurL

  4. #4
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Désolé, j'avais mal lu ta question

    Pour les TMainMenu, je ne sais pas mais selon l'aide de Builder, la propriété Items est en lecture seule. Je ne sais donc pas si c'est faisable.
    + + +

  5. #5
    jcr
    jcr est déconnecté
    Futur Membre du Club
    Profil pro
    Analyste-programmeur
    Inscrit en
    Juillet 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste-programmeur

    Informations forums :
    Inscription : Juillet 2002
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    il y a moyen de le faire, essaye cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TMenuItem *menu; 
    menu->Caption = "Mon menu"; 
    MainMenu->Items[pos]->Items[index]->Add(menu);
    avec pos correspondant à la position de ton menu principal et index à la position du sous-menu où tu veux ajouter ton sous-menu.
    Je pense que le premier menu a comme valuer 0 .

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

Discussions similaires

  1. [AJAX] Sous-menu dynamique
    Par Carlitos dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/03/2007, 17h23
  2. menu et sous menu dynamiques
    Par cels dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 20/11/2006, 12h54
  3. Sous menu Dynamique
    Par philippe30 dans le forum Delphi
    Réponses: 2
    Dernier message: 25/05/2006, 17h04
  4. [VB6] sous menu dynamique
    Par malhivertman1 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/03/2006, 14h13

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