Как добавить значения в combobox в C ++ Builder?
-
05-07-2019 - |
Вопрос
Я хочу добавить значения в 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];
...
Другие советы
содержит список (вектор / массив, что вы хотите), содержащий пары имя и значение. При выборе имени посмотрите значение в списке.