Combobox 如何在C++;建设者 我想在C++ Builder 6中添加到组合框的值。 我知道我可以通过字符串列表编辑器将字符串添加到组合框中

Combobox 如何在C++;建设者 我想在C++ Builder 6中添加到组合框的值。 我知道我可以通过字符串列表编辑器将字符串添加到组合框中,combobox,c++builder,Combobox,C++builder,例如,我已将此列表添加到combobox: car ball apple bird 我想在每个文本后面,它都有自己的值,所以当用户选择文本时,我可以得到比文本更大的值。就像HTML选择一样 但当我试图为每一篇文章增加价值时: ComboBox1->Items->Values[0] = "mycar"; ComboBox1->Items->Values[1] = "aball"; etc... 它将向列表中添加更多文本,如 car ball apple bird 0=m

例如,我已将此列表添加到combobox:

car
ball
apple
bird
我想在每个文本后面,它都有自己的值,所以当用户选择文本时,我可以得到比文本更大的值。就像HTML选择一样

但当我试图为每一篇文章增加价值时:

ComboBox1->Items->Values[0] = "mycar";
ComboBox1->Items->Values[1] = "aball";
etc...
它将向列表中添加更多文本,如

car
ball
apple
bird
0=mycar
1=aball
这不是我想要的。我不想把额外的文本添加到列表中。
那么,我如何才能正确地为每个文本添加值,并获得值呢?

保存一个包含名称和值对的列表(向量/数组,任何您想要的)。选择名称时,请在列表中查找值。

如果要将值存储在组合框本身中,则需要使用Objects[]属性而不是values[]属性,例如:

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];
如您所见,这需要管理动态分配的字符串对象。更好的选择是将值存储在单独的列表中,如PoweRoy建议的
TStringList
std::vector
。只要该列表的项数与ComboBox相同,您就可以使用ComboBox索引来访问这些值,例如:

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

#包括
std::向量值;
...
MyValues.向后推(“mycar”);
MyValues.push_back(“aball”);
...
字符串值=MyValues[ComboBox1->ItemIndex];
...
#include <vector>

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