Domanda

Voglio aggiungere valori alla casella combinata in C ++ builder 6. So di poter aggiungere una stringa alla casella combinata tramite l'editor dell'elenco di stringhe.

Ad esempio, ho aggiunto questo elenco alla casella combinata:

car
ball
apple
bird

Voglio dietro ogni testo, ha il suo valore, quindi posso ottenere un valore più elevato rispetto al testo quando l'utente ha selezionato un testo. Proprio come HTML Select.

Ma quando provo ad aggiungere valore a ciascun testo:

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

aggiungerà più testo all'elenco, come

car
ball
apple
bird
0=mycar
1=aball

Questo non è quello che voglio. Non voglio aggiungere altro testo all'elenco. Quindi, come posso aggiungere correttamente i valori a ciascun testo e ottenere il valore?

È stato utile?

Soluzione

Se si desidera archiviare i valori nel ComboBox stesso, è necessario utilizzare la proprietà Objects [] anziché la proprietà Values ??[], ad esempio:

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

Come puoi vedere, questo richiede la gestione di oggetti String allocati dinamicamente. Un'opzione migliore sarebbe quella di memorizzare i valori in un elenco separato, come un TStringList o std :: vector , come suggerito da PoweRoy. Finché l'elenco contiene lo stesso numero di elementi di ComboBox, è possibile utilizzare gli indici ComboBox per accedere ai valori, ad esempio:

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

Altri suggerimenti

contiene un elenco (vettore / matrice, qualunque cosa tu voglia) contenente le coppie nome e valore. Quando si seleziona un nome, cercare il valore nell'elenco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top