我想在C ++ builder 6中为组合框添加值。 我知道我可以通过字符串列表编辑器将字符串添加到组合框中。
例如,我已将此列表添加到组合框:
car
ball
apple
bird
我想要在每个文本后面,它有自己的值,所以当用户选择文本时,我可以获得比文本更高的值。就像HTML选择一样。
但是当我尝试为每个文本添加值时:
ComboBox1->Items->Values[0] = "mycar";
ComboBox1->Items->Values[1] = "aball";
etc...
它会在列表中添加更多文字,例如
car
ball
apple
bird
0=mycar
1=aball
这不是我想要的。我不希望额外的文本添加到列表中。 那么,我如何正确地为每个文本添加值,并获得值?
答案 0 :(得分:2)
如果要将值存储在ComboBox本身中,则需要使用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];
如您所见,这需要管理动态分配的String对象。更好的选择是将值存储在单独的列表中,例如TStringList
或std::vector
,就像PoweRoy建议的那样。只要该列表与ComboBox具有相同数量的项目,您就可以使用ComboBox索引来访问这些值,例如:
TStringList *MyValues = new TStringList;
...
MyValues->Add("mycar");
MyValues->Add("aball");
...
String value = MyValues->Strings[ComboBox1->ItemIndex];
...
delete MyValues;
或者:
#include <vector>
std::vector<String> MyValues;
...
MyValues.push_back("mycar");
MyValues.push_back("aball");
...
String value = MyValues[ComboBox1->ItemIndex];
...
答案 1 :(得分:0)
保存包含名称和值对的列表(矢量/数组)。选择名称时,请在列表中查找值。