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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top