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 :

[CB6] Création dynamique de menu


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Faith's Fall
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 740
    Par défaut [CB6] Création dynamique de menu
    Bonsoir,

    Alors dans mon projet je dois récuperer des valeurs dans un fichier XML et créer des éléments dans un Menu précréé.

    Le menu précréé est nommé MPlug.

    Dans un premier temps je recupere les donnée de l'XML que je stocke dans une variable de type AnsiString. (Pour l'explication on passera l'XML car il fonctionne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    AnsiString sName = "Hello World";
    AnsiString sUrl = "C:\projet\monprojet.exe"
     
    // Je créé une nouvelle entré dans le menu
     
    TMenuIem* pMitem = new TMenuItem(MPlug);
    MPlug->Add(pMitem);
    pMitem->Caption = sName;
    pMitem->Hint = sUrl; // On stocke l'url ici
    entre parallele j'ai créé une fonction execCommand(AnsiString sExe) qui doit lancer l'exe contenu dans le hint de l'élément.

    Mon problème est que je sait pas du tout comment allouer cette commande a chaque nouveau élément du menu dans l'évenement onClick

    Quelqu'un a une idée ?


  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut the crow
    J'ai fait une recherche sur le Forum avec " menu dynamique " il y a plusieurs reponses regarde ce lien peut etre repond il a ta demande

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    On déclarant dans la classe de la form une méthode (en public), il faut juste respecter le prototype (une méthode qui prend pour paramètre un TObject *Sender):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void __fastcall MonClick(TObject *Sender);
    La méthode (le Sender est l'objet concerné par le click) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TForm1::MonClick(TObject *Sender)
    {
    TMenuItem *M = (TMenuItem*)Sender;
    AnsiString N = M->Hint;
    //...To do ... 
    // si AnsiString ne passe pas pour la commande
    // alors on passe un tableau de caractères (à zéro terminal) : N.c_str() 
    }
    Pour chaque menuitem existe donc un Caption et un Hint différents mais on leur donne à partager pour l'événement OnClick cette méthode unique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TMenuItem *Nouveau = new TMenuItem(this);
    ...
    Nouveau->OnClick = MonClick;
    A plus !

  4. #4
    Membre Expert
    Avatar de Faith's Fall
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 740
    Par défaut
    Merci a vous 2 la solution de henderson marche parfaitement.

    Par contre j'ai un autre soucis, il me créé bien l'item dans le menu mais l'affichage merde un peu (voir screen).

    L'ajout (puTTY) est décalé et apparament le thème prend pas


    Y a un moyen de réparer cela ?

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    en faisant un redraw ou un repaint sur l'item après son insertion ?

  6. #6
    Membre Expert
    Avatar de Faith's Fall
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 740
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 740
    Par défaut
    Citation Envoyé par Auteur Voir le message
    en faisant un redraw ou un repaint sur l'item après son insertion ?

    Bonne idée, j'avais deja tester de remettre le styler.

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

Discussions similaires

  1. Création d'un menu contextuel dynamique.
    Par femfem dans le forum WinDev
    Réponses: 1
    Dernier message: 19/11/2007, 15h43
  2. Création dynamique de VB.Menu
    Par ppphil dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/07/2007, 11h04
  3. création dynamique d'un sous-menu
    Par OutOfRange dans le forum Delphi
    Réponses: 7
    Dernier message: 09/12/2006, 10h56
  4. Réponses: 8
    Dernier message: 06/07/2006, 08h19
  5. Création d'un menu (de langue) dynamiquement
    Par neb-toi dans le forum Langage
    Réponses: 7
    Dernier message: 21/11/2005, 15h27

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