TListBox
25.07.1999
  • Wybieranie pozycji z ListBox lub ComboBox poprzez kod.

      Dla ComboBox i ListBox pojedynczego wyboru, możesz dokonać selekcji przypisując numer do właściwości ItemIndex. Przypisanie zera powoduje wybranie pierwszej pozycji. Przypisując -1 anulujesz selekcję wszystkich pozycji.

// przykłady jednokrotnego wyboru z ListBox
    ListBox1->ItemIndex = 0;   // wybiera pierwszą pozycję
    ListBox1->ItemIndex = 2;   // wybiera trzecią pozycję
    ListBox1->ItemIndex++;     // wybiera kolejną pozycję
    ListBox1->ItemIndex = -1;  // odznacza wszystkie pozycje

      Lepiej jednak wybierać pozycję ze względu na określony łańcuch tekstowy, używając funkcji IndexOf, która zwraca indeks łańcucha i przypisując ten indeks do właściwości ItemIndex. Wybranie pozycji z tekstem "To przykład" wyglądałoby tak:

ListBox1->ItemIndex = ListBox1->Items->IndexOf("To przykład"); 

      Dla ListBox wielokrotnego wyboru zaznaczasz i odznaczasz pozycję poprzez czytanie i zapisywanie do właściwości Selected. Właściwość ta funkcjonuje jako tablica danych typu bool. Indeks tablicy odpowiada indeksowi pozycji w ListBox. Aby wybrać pozycje ustaw Selected[indeks] na true. Poniżej są tego przykłady.

// przykłady wielokrotnego wyboru z ListBox 
    ListBox1->Selected[0] = true;  // dodaje pierwszą pozycję
				      do selekcji
    ListBox1->Selected[0] = false; // usuwa pierwszą pozycję
				      z wybranych

    // przełącza dziesiątą pozycję
    ListBox1->Selected[9] = !ListBox1->Selected[9]

    // zaznacza zakres pozycji (11-19)
    for (int j=10; j<=19; j++)
        ListBox1->Selected[j] = true;

Uwaga: Czytając wartość tablicy Selected kontrolki ListBox wielokrotnego wyboru dowiadujesz się czy pozycja jest aktualnie wybrana. Wartość true oznacza, że pozycja jest wybrana, false, że nie. Zapisując do tablicy Selected ustawiasz stan wyboru odpowiedniej pozycji. Zaznaczasz pozycję poprzez ustawienie na true, a odznaczasz ustawiając na false. Czytanie i pisanie do jednej pozycji ListBox nie wpływa na inne.

Uwaga: Nie używaj tablicy Selected w ListBox jednokrotnego wyboru.

Uwaga: W ListBox wielokrotnego wyboru możesz odczytać właściwość ItemIndex aby dowiedzieć się która pozycja jest aktualnie aktywna. Jednakże przypisanie wartości do ItemIndex nie ma tu żadnego efektu. Kiedy zapisujesz wartość do ItemIndex, VCL wysyła komunikat LB_SETCURSEL do ListBox. ListBox wielokrotnego wyboru ignoruje ten komunikat.