Pregunta

Quiero agregar valores al cuadro combinado en C ++ Builder 6. Sé que puedo agregar una cadena al cuadro combinado por el editor de lista de cadenas.

Por ejemplo, he agregado esta lista al cuadro combinado:

car
ball
apple
bird

Quiero detrás de cada texto, tiene su propio valor, por lo que puedo obtener el valor en lugar del texto cuando el usuario seleccionó un texto. Al igual que HTML seleccionar.

Pero cuando intento agregar valor a cada texto:

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

agregará más texto a la lista, como

car
ball
apple
bird
0=mycar
1=aball

Esto no es lo que quiero. No quiero que el texto extra se agregue a la lista. Entonces, ¿cómo puedo agregar valores a cada texto correctamente y obtener el valor?

¿Fue útil?

Solución

Si desea almacenar los valores en el propio ComboBox, entonces necesita usar la propiedad Objects [] en lugar de la propiedad Values ??[], por ejemplo:

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

Como puede ver, esto requiere administrar objetos String asignados dinámicamente. Una mejor opción sería almacenar los valores en una lista separada, como TStringList o std :: vector , como sugirió PoweRoy. Mientras esa lista tenga la misma cantidad de elementos que ComboBox, puede usar los índices ComboBox para acceder a los valores, por ejemplo:

TStringList *MyValues = new TStringList;
...
MyValues->Add("mycar");
MyValues->Add("aball");
...
String value = MyValues->Strings[ComboBox1->ItemIndex];
...
delete MyValues;

O:

#include <vector>

std::vector<String> MyValues;
...
MyValues.push_back("mycar");
MyValues.push_back("aball");
...
String value = MyValues[ComboBox1->ItemIndex];
...

Otros consejos

mantenga una lista (vector / array como quiera) que contenga los pares de nombre y valor. Al seleccionar un nombre, busque el valor en la lista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top