Вопрос

Я хочу добавить значения в combobox в C ++ builder 6.Я знаю, что могу добавить строку в combobox с помощью редактора списка строк.

Например, я добавил этот список в combobox:

car
ball
apple
bird

Я хочу, чтобы за каждым текстом стояло свое собственное значение, поэтому я могу получить значение быстрее, чем текст, когда пользователь выделил текст.Точно так же, как HTML select.

Но когда я пытаюсь придать ценность каждому тексту:

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

это добавит больше текста в список, например

car
ball
apple
bird
0=mycar
1=aball

Это не то, чего я хочу.Я не хочу, чтобы в список добавлялся дополнительный текст.Итак, как я могу правильно добавить значения к каждому тексту и получить значение?

Это было полезно?

Решение

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

Как вы можете видеть, для этого требуется управлять динамически распределяемыми строковыми объектами.Лучшим вариантом было бы сохранить значения в отдельном списке, например TStringList или std::vector, как и предлагал ПауэРой.Пока этот список содержит то же количество элементов, что и поле со списком, вы можете использовать индексы списка со списком для доступа к значениям, например:

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];
...

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top