Komponent ComboBox jest rozwijaną listą. Jest powszechnie wykorzystywany w okienkach do otwierania i zapisywania plików (OpenDialog i SaveDialog). Może posłużyć jako lista wyboru dla dysków, plików itp.
Wstawianie pozycji listy do ComboBox.
Żeby wstawić do listy obiektu ComboBox nową pozycję w czasie działania programu należy posłużyć się właściwością Add(AnsiString S):
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { ComboBox1->Items->Add("tutej wpisz nazwę pozycji"); } //-------------------------------- |
To oczywiście pozwala na wprowadzenie tylko pojedynczego elementu listy. Żeby wprowadzić więcej niż jedną pozycję należy posłużyć się pętlą:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i = 0; i < 5; i++) { ComboBox1->Items->Add("Pozycja: " + IntToStr(i)); } } //-------------------------------- |
W ten sposób zostanie utworzona lista zawierająca następujące elementy:
Pozycja: 0
Pozycja: 1
Pozycja: 2
Pozycja: 3
Pozycja: 4
Odczytywanie pozycji z listy ComboBox.
Żeby odczytać dowolną pozycję z listy ComboBox trzeba podać jej położenie wewnątrz listy licząc od zera:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = ComboBox1->Items->Strings[2]; // Odczytano drugą pozycję z listy licząc od zera. } //-------------------------------- |
W celu odczytania zwartości aktualnie zaznaczonej pozycji na liście, czyli takiej która jest właśnie wyświetlana należy posłużyć się właściwością ItemIndex:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = ComboBox1->Items->Strings[ComboBox1->ItemIndex]; // Odczytano zaznaczoną pozycję na liście. } //-------------------------------- |
Wybranie pozycji z ComboBox poprzez podanie nazwy elementu listy.
Czasami może zaistnieć konieczność wybrania w ComboBox pozycji z listy poprzez podanie jej nazwy, np. podczas wyszukiwania gdy lista zawiera kilkaset pozycji a my chcemy sprawdzić czy znajduje się na niej poszukiwany element i określić jego położenie na liście. W tym celu należy posłużyć się właściwością IndexOf(AnsiString S).
Żeby określić pozycję poszukiwanego elementu na liście:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { int x = ComboBox1->Items->IndexOf("Poszukiwany element listy"); } //-------------------------------- |
Żeby określić pozycję poszukiwanego elementu na liście i wywołać ją jeśli poszukiwany element znajduje się na liście:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { ComboBox1->ItemIndex = ComboBox1->Items->IndexOf("Poszukiwany element listy"); } //-------------------------------- |
Wybranie pozycji z ComboBox poprzez podanie numeru elementu listy
W celu wybranie elementu listy tylko poprzez podanie jego pozycji na liście należy posłużyć się właściwością ItemIndex:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { ComboBox1->ItemIndex = 3; // wybrano trzecią pozycję z listy. } //-------------------------------- |
Zamiana wartości (treści) określonego elementu listy Combobox.
Żeby można było zmienić zawartość określonego elementu listy taki element musi istnieć, a robi się to wykorzystując właściwość Strings[x]:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { ComboBox1->Items->Strings[2] = "Zmieniona wartość"; // zmieniono zawartość trzeciego elementu listy. } //-------------------------------- |
Czyszczenie zawartości ComboBox oraz kasowanie określonego elementu listy.
Żeby wyczyścić zawartość ComboBox należy posłużyć się funkcją Clear():
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { ComboBox1->Clear(); } //-------------------------------- |
W celu skasowania pojedynczego elementu listy należy podać pozycję tego elementu jako parametr funkcji Delete(x):
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { ComboBox1->Items->Delete(4); // Usunięto czwarty element na liście licząc od zera. } //-------------------------------- |
Wstawianie nowego elementu listy w wybranej pozycji do ComboBox.
Żeby wstawić nowy element listy w wybranej pozycji należy posłużyć się funkcją Insert(int x, AnsiString S) przekazując jako parametry pozycję na liście w której zostanie wstawiony nowy element oraz jako drugi parametr treść wstawianego elementu. Nowo pozycja zostanie wstawiona przed określoną pozycją przy czym nie powoduje to usunięcia znajdującego się już tam elementu, a jedynie jego przesunięcie w dół listy:
| // Plik źródłowy np. Unit1.cpp void __fastcall TForm1::Button1Click(TObject *Sender) { ComboBox1->Items->Insert(2, "Wstawiany element listy"); // Wstawiono nowy element w drugiej pozycji. } //-------------------------------- |