如何在C ++ Builder中向组合框添加值?

时间:2009-09-11 09:46:55

标签: combobox c++builder

我想在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

这不是我想要的。我不希望额外的文本添加到列表中。 那么,我如何正确地为每个文本添加值,并获得值?

2 个答案:

答案 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对象。更好的选择是将值存储在单独的列表中,例如TStringListstd::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)

保存包含名称和值对的列表(矢量/数组)。选择名称时,请在列表中查找值。