Come aggiungere valori alla casella combinata in C ++ Builder?
-
05-07-2019 - |
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?
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.