2009-09-11 7 views
1

Je veux ajouter des valeurs à la liste déroulante dans le constructeur C++ 6. Je sais que je peux ajouter une chaîne à la liste déroulante par éditeur de liste de chaînes.Comment ajouter des valeurs à la liste déroulante dans C++ Builder?

Par exemple, j'ai ajouté cette liste à combobox:

car 
ball 
apple 
bird 

Je veux derrière chaque texte, il a sa propre valeur, donc je peux obtenir la valeur rahter que le texte lorsque l'utilisateur a sélectionné un texte. Tout comme HTML sélectionner.

Mais lorsque je tente d'ajouter de la valeur à chaque texte:

ComboBox1->Items->Values[0] = "mycar"; 
ComboBox1->Items->Values[1] = "aball"; 
etc... 

il ajouter du texte à la liste, comme

car 
ball 
apple 
bird 
0=mycar 
1=aball 

Ce n'est pas ce que je veux. Je ne veux pas que le texte supplémentaire soit ajouté à la liste. Alors, comment puis-je ajouter des valeurs à chaque texte correctement, et obtenir la valeur?

Répondre

2

Si vous souhaitez stocker les valeurs dans la zone de liste déroulante lui-même, alors vous devez utiliser les objets [] propriété au lieu des valeurs [] propriété, par exemple:

ComboBox1->Items->Objects[0] = (TObject*) new String("mycar"); 
ComboBox1->Items->Objects[1] = (TObject*) new String("aball"); 
... 
String value = * (String*) ComboBox1->Items->Objects[ComboBox1->ItemIndex]; 
... 
delete (String*) ComboBox1->Items->Objects[0]; 
delete (String*) ComboBox1->Items->Objects[1]; 

Comme vous pouvez le voir, cette requiert la gestion des objets String alloués dynamiquement. Une meilleure option serait de stocker les valeurs dans une liste séparée, comme un TStringList ou std::vector, comme PoweRoy suggéré. Tant que cette liste a le même nombre d'éléments que la zone de liste déroulante, vous pouvez utiliser les index ComboBox pour accéder aux valeurs, par exemple:

TStringList *MyValues = new TStringList; 
... 
MyValues->Add("mycar"); 
MyValues->Add("aball"); 
... 
String value = MyValues->Strings[ComboBox1->ItemIndex]; 
... 
delete MyValues; 

Ou:

#include <vector> 

std::vector<String> MyValues; 
... 
MyValues.push_back("mycar"); 
MyValues.push_back("aball"); 
... 
String value = MyValues[ComboBox1->ItemIndex]; 
... 
0

contenir une liste (vecteur/tableau ce que vous voulez) contenant les paires nom et valeur. Lorsque vous sélectionnez un nom, recherchez la valeur dans la liste.

Questions connexes