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
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
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);
Merci, un peu de précision stp.
ChangePropertyComboBox(this) doit être mis dans FormCreate()?
Oui c'est ça, ou bien carrement dans le constructeur de la Form...ChangePropertyComboBox(this) doit être mis dans FormCreate()?
Voici, j'ai mis la fonction ci-dessous pour modifier tous les ComboBox->Style = csDropDownList, mais cela ne fonctionne pas:
J'ai mis ChangePropertyComboBox(this); dans
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; } } } //---------------------------------------------------------------------------
Merci par avance
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); }
Bonjour,
Es tu sur que le parent de tes ComboBox soit la form ? Tes Combos ne sont pas sur un autre composant ? GroupBox...Panel...ChangePropertyComboBox(this);
Sinon moi j'utilise ce code...
La aussi cela fonctionne que si tes Combos sont directement sur la form...Dans le cas contraire il faudra multiplier les boucles.
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; } } } //---------------------------------------------------------------------------
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
Merci Poilou,
j'ai essayé ton code, il y a une erreur:
Style n'est pas un membre de TControl
Voici, j'ai mis la fonction ci-dessous pour modifier tous les ComboBox->Style = csDropDownList, mais cela ne fonctionne pas:C'est pour ça que la fonction que je propose est RECURSIVE :Es tu sur que le parent de tes ComboBox soit la form ? Tes Combos ne sont pas sur un autre composant ? GroupBox...Panel...
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); } }
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?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager