Как добавить значения в выпадающий список в C ++ Builder? - PullRequest
1 голос
/ 11 сентября 2009

Я хочу добавить значения в выпадающий список в 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 ]

2 голосов
/ 22 сентября 2009

Если вы хотите сохранить значения в самом 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];
...
0 голосов
/ 11 сентября 2009

содержит список (вектор / массив, что вы хотите), содержащий пары имя и значение. При выборе имени посмотрите значение в списке.

...