C ++ Builderでコンボボックスに値を追加する方法は?
-
05-07-2019 - |
質問
C ++ Builder 6のコンボボックスに値を追加したい。 文字列リストエディタで文字列をコンボボックスに追加できることはわかっています。
たとえば、このリストをcomboboxに追加しました:
car
ball
apple
bird
各テキストの背後にある必要があり、独自の値を持っているため、ユーザーがテキストを選択したときにテキストよりも高い値を取得できます。 HTMLの選択と同様。
しかし、各テキストに値を追加しようとすると:
ComboBox1->Items->Values[0] = "mycar";
ComboBox1->Items->Values[1] = "aball";
etc...
次のように、リストにさらにテキストを追加します
car
ball
apple
bird
0=mycar
1=aball
これは私が望むものではありません。余分なテキストをリストに追加したくありません。 では、どのようにして各テキストに値を適切に追加し、値を取得できますか?
解決
ComboBox自体に値を保存する場合は、Values []プロパティの代わりにObjects []プロパティを使用する必要があります。例:
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];
ご覧のとおり、これには動的に割り当てられたStringオブジェクトの管理が必要です。 PoweRoyが提案したように、 TStringList
や std :: vector
などの別のリストに値を保存することをお勧めします。リストにComboBoxと同じ数のアイテムがある限り、ComboBoxインデックスを使用して値にアクセスできます。例:
TStringList *MyValues = new TStringList;
...
MyValues->Add("mycar");
MyValues->Add("aball");
...
String value = MyValues->Strings[ComboBox1->ItemIndex];
...
delete MyValues;
または:
#include <vector>
std::vector<String> MyValues;
...
MyValues.push_back("mycar");
MyValues.push_back("aball");
...
String value = MyValues[ComboBox1->ItemIndex];
...
他のヒント
名前と値のペアを含むリスト(必要なベクトル/配列)を保持します。名前を選択するときは、リストで値を調べます。
所属していません StackOverflow