Wie füge ich Combobox im C ++ - Builder Werte hinzu?
-
05-07-2019 - |
Frage
Ich möchte Combobox in C ++ Builder 6 Werte hinzufügen. Ich weiß, dass ich Combobox nach String -List -Editor String hinzufügen kann.
Zum Beispiel habe ich diese Liste zu Combobox hinzugefügt:
car
ball
apple
bird
Ich möchte hinter jedem Text, es hat ihren eigenen Wert, sodass ich den Wert Rahter als den Text erhalten kann, wenn der Benutzer einen Text ausgewählt hat. Genau wie HTML SELECT.
Aber wenn ich versuche, jedem Text einen Mehrwert zu verleihen:
ComboBox1->Items->Values[0] = "mycar";
ComboBox1->Items->Values[1] = "aball";
etc...
Es fügt der Liste mehr Text hinzu, wie
car
ball
apple
bird
0=mycar
1=aball
Das will ich nicht. Ich möchte nicht, dass der zusätzliche Text der Liste hinzugefügt wird. Wie kann ich jedem Text Werten ordnungsgemäß hinzufügen und den Wert erhalten?
Lösung
Wenn Sie die Werte im Combobox selbst speichern möchten, müssen Sie beispielsweise die Eigenschaft [] Eigenschaft [] anstelle der Werte [] verwenden [] Eigenschaft [] verwenden:
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];
Wie Sie sehen können, muss dynamisch zugewiesene String -Objekte verwaltet werden. Eine bessere Option wäre es, die Werte in einer separaten Liste zu speichern, wie z. TStringList
oder std::vector
, wie Poweroy vorgeschlagen. Solange diese Liste die gleiche Anzahl von Elementen wie Combobox hat, können Sie Combobox -Indizes verwenden, um auf die Werte zuzugreifen, z. B.:
TStringList *MyValues = new TStringList;
...
MyValues->Add("mycar");
MyValues->Add("aball");
...
String value = MyValues->Strings[ComboBox1->ItemIndex];
...
delete MyValues;
Oder:
#include <vector>
std::vector<String> MyValues;
...
MyValues.push_back("mycar");
MyValues.push_back("aball");
...
String value = MyValues[ComboBox1->ItemIndex];
...
Andere Tipps
Halten Sie eine Liste (Vector/Array was auch immer Sie wollen) mit Namen und Wertpaaren enthalten. Wenn Sie einen Namen auswählen, sehen Sie den Wert in der Liste an.