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 :

Comment accéder tous les ComboBox dans ma fiche


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut Comment accéder tous les ComboBox dans ma fiche
    Bonjour,
    je voudrais accéder tous les ComboBox dans ma fiche pour modifier les propiétés. Comme il y a une centaine de ComboBox, je voudrais connaitre s'il y a une méthode simple via programme pour effectuer la modification de propiété.
    Merci

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 137
    Points : 161
    Points
    161
    Par défaut
    un truc dans le genre :

    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
    void ChangePropertyComboBox(TWinControl *parent)
    {
      for (int i = 0; i < parent->ControlCount; i++)
       {
       TComboBox *cb = dynamic_cast<TComboBox *> (parent->Controls[i]);
       if (cb != NULL)
            {
            ...
            }
       ChangePropertyComboBox(parent->Controls[i]);
       }     
    }
     
    //---appel dans le constructeur par exemple
    ChangePropertyComboBox(this);

  3. #3
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci, un peu de précision stp.
    ChangePropertyComboBox(this) doit être mis dans FormCreate()?

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 137
    Points : 161
    Points
    161
    Par défaut
    ChangePropertyComboBox(this) doit être mis dans FormCreate()?
    Oui c'est ça, ou bien carrement dans le constructeur de la Form...

  5. #5
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Voici, j'ai mis la fonction ci-dessous pour modifier tous les ComboBox->Style = csDropDownList, mais cela ne fonctionne pas:

    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
    //---------------------------------------------------------------------------
    void ChangePropertyComboBox(TWinControl *parent)
    {
       // Avoid modifying Text zone
       for (int i=0; i<parent->ControlCount; i++)
       {
          TComboBox *cb = dynamic_cast<TComboBox *> (parent->Controls[i]);
          if (cb != NULL)
          {
            cb->Style = csDropDownList;
          }
     
       }
     
    }
    //---------------------------------------------------------------------------
    J'ai mis ChangePropertyComboBox(this); dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
     
       //---appel dans le constructeur par exemple
       ChangePropertyComboBox(this);
    }
    Merci par avance

  6. #6
    Membre régulier Avatar de Poilou
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 59
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    ChangePropertyComboBox(this);
    Es tu sur que le parent de tes ComboBox soit la form ? Tes Combos ne sont pas sur un autre composant ? GroupBox...Panel...

    Sinon moi j'utilise ce code...

    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
     
    //---------------------------------------------------------------------------
    void ChangePropertyComboBox(TForm* parent)
    {
       // Avoid modifying Text zone
       for (int i=0; i<parent->ControlCount; i++)
       {
          if ((AnsiString)parent->Controls[i]->ClassName() == "TComboBox")
          {
            (TComboBox)parent->Controls[i]->Style = csDropDownList;
          }
     
       }
     
    }
    //---------------------------------------------------------------------------
    La aussi cela fonctionne que si tes Combos sont directement sur la form...Dans le cas contraire il faudra multiplier les boucles.

    En espérant que ça t'aide..

    Fabrice
    Proverbe nain : On boira du lait le jour où les vaches mangeront du houblon !

    le site de ma douce et tendre

  7. #7
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci Poilou,
    j'ai essayé ton code, il y a une erreur:
    Style n'est pas un membre de TControl

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 137
    Points : 161
    Points
    161
    Par défaut
    Voici, j'ai mis la fonction ci-dessous pour modifier tous les ComboBox->Style = csDropDownList, mais cela ne fonctionne pas:
    Es tu sur que le parent de tes ComboBox soit la form ? Tes Combos ne sont pas sur un autre composant ? GroupBox...Panel...
    C'est pour ça que la fonction que je propose est RECURSIVE :
    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
     
    void ChangePropertyComboBox(TControl *parent)
    {
       for (int i=0; i<parent->ControlCount; i++)
       {
          TComboBox *cb = dynamic_cast<TComboBox *> (parent->Controls[i]);
          if (cb != NULL)
          {
            cb->Style = csDropDownList;
          }
       //---MODIFICATION DES SOUS CONTROLS ---
       TWinControl *wc = dynamic_cast<TWinControl *> (parent->Controls[i]);
       if (wc != NULL)
          ChangePropertyComboBox(wc);
       }
    }

  9. #9
    Membre habitué
    Homme Profil pro
    Chercheur génie électrique
    Inscrit en
    Mai 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur génie électrique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 263
    Points : 136
    Points
    136
    Par défaut
    Merci à tous.
    Je commence à comprendre un peu le principe de modification de propiété à la construction d'un composant.

    Le code proposé par slylafone fonctionne parfaitement RECURSIVE. En effet, j'ai empilé GroupBox + Panel + Combobox.
    Merci slylafone, j'ai encore une petite question à te poser: comment une fonction peut appeler elle-même sans poser des problèmes en pratique?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/06/2012, 12h54
  2. Réponses: 7
    Dernier message: 03/10/2007, 17h58
  3. Comment lister tous les composants d'une fiche ?
    Par tipiweb dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2006, 21h53
  4. [TWebBrowser] Comment trouver tous les liens dans une page ?
    Par xenos dans le forum Composants VCL
    Réponses: 1
    Dernier message: 15/01/2006, 23h36

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