§ 16. Компоненты для работы со списками строк

16.3. Компонент ListBox

Компонент список — ListBox предназначен для выбора одной или нескольких строк в списке. На панели компонентов Standard компонент список изображен в виде  , имя объекта — ListBox. Компонент ListBox, помещенный на форму, получает имя  ListBoxN, где N — номер 1, 2, 3… (пример 16.6).

Основное свойство компонента ListBox, содержащее текст окна в виде списка строк — свойство Items, принадлежит к типу TSring. Начальное значение списка строк можно задать на этапе проектирования. Для этого нужно нажать кнопку   около свойства Items в окне инспектора объектов. При этом откроется окно редактирования списков строк (String List Editor). Это же окно использовалось для заполнения строк компонента Memo.

При выполнении программы для изменения содержимого окна компонента ListBox применяются методы класса TString.

Список может иметь несколько столбцов. При заполнении текущего столбца строками донизу, очередная строка будет отображаться в новом столбце.

Некоторые свойства компонента ListBox приведены в примере 16.7.

Пример 16.8. Создать список времен года. При выборе времени года перечислять месяцы, относящиеся к этому времени года.

Этапы выполнения задания

  1. Поместить на форму список и метку.
  2. Используя редактор списков строк, внести в список строки: зима, весна, лето, осень.
  3. У свойства Columns установить значение 2.
  4. Написать обработчик события OnClick для компонента ListBox:

Компонент ListBox автоматически добавит полосу прокрутки, если количество строк не помещается по высоте компонента. Если количество столбцов не установлено (значение Columns по умолчанию равно 0), то возникает вертикальная полоса прокрутки. Если количество столбцов в компоненте больше нуля, то возникает горизонтальная полоса прокрутки и данные добавляются в новый столбец.

Высота каждой строки равна ItemHeight. Если нужно, чтобы при добавлении новой строки полоса прокрутки точно не возникла, этот размер нужно добавить к высоте компонента.

Пример 16.6. Компонент ListBox на форме:

Пример 16.7. Некоторые свойства компонента ListBox:

Свойство

Назначение

Columns

Задает число столбцов в компоненте для отображения списка

MultiSelect

Значение True у этого свойства показывает, что можно выбрать одновременно несколько строк из списка

SelCount

Определяет количество выделенных строк в списке. Свойство доступно только для чтения и не может быть изменено программно, не отображается в инспекторе объектов

Selected[N]

Значение True у этого свойства показывает, что элемент с номером N выделен в списке (нумерация строк в списке начинается с нуля), не отображается в инспекторе объектов

ItemIndex

Индекс выделенного элемента, если выбор нескольких строк запрещен, не отображается в инспекторе объектов, по умолчанию равен -1

Sorted

Значение True у этого свойства показывает, что строки в списке будут отсортированы в алфавитном порядке

Пример 16.8. Форма на этапе проектирования:

Обработчик события OnClick для компонента ListBox.

void __fastcall TForm1::ListBox1Click
               (TObject *Sender)

{

  switch (ListBox1->ItemIndex) {

    case 0: {

      Label1->Caption = "Зимние месяцы:

       декабрьянварьфевраль";

      break;

    }

    case 1: {

      Label1->Caption = "Весенние месяцы:

        март, апрель, май";

      break;

    }

     case 2: {

      Label1->Caption = "Летние месяцы:

       июньиюльавгуст";

      break;

    }

     case 3: {

      Label1->Caption = "Осенние месяцы:

       сентябрь, октябрь, ноябрь";

      break;

    }

  }

} 

Работающее приложение: