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
Version imprimable
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:
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...Citation:
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); dansCode:
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 avanceCode:
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...Citation:
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:
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
Merci Poilou,
j'ai essayé ton code, il y a une erreur:
Style n'est pas un membre de TControl
Citation:
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 :Citation:
Es tu sur que le parent de tes ComboBox soit la form ? Tes Combos ne sont pas sur un autre composant ? GroupBox...Panel...
Code:
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?