Компонент delphi CheckListBox — список множественного выбора. Отличие от ListBox заключается наличием рядом с каждой строкой переключателя CheckBox, облегчающий выбор сразу нескольких опций. Так же индикаторы можно переключать программно, например если список выводит данные о наличие товара на складе. Список используется для вывода данных с возможностью отметки каких-либо характеристик например можно его встретить при настройке параметров в MS Word(рис 1).
- рис 1
Для вставки в компонент группы независимых переключателей, открываем редактор свойства Items и вводим одну или несколько строк. Эти строки будут находится справа от переключателя, и будут являться поясняющей надписи для них.
свойства CheckListBox:
AllowGrayed | запрещает или разрешает использования в переключателях третьего состояния cbGrayed(помеченное затемненое серым цветом) |
BorderStyle | тип рамки, если bsNone, то рамка отсутствует, если bsSingle то появляется рамка в один пиксель |
Columns | количество колонок в компоненте |
IntegralHeight | если True то автоматически изменяет высоту компонента, для полного отображения опции, если значение установлено False, то этого происходить не будет |
Items | содержит опции компонента |
MultiSelect | если True, то позволяет выбирать множество опций |
SelCount | если MultiSelect установлено в True то содержит количество выбранных опций |
Sorted | позволяет сортировать по алфавиту |
Style | определяет способ прорисовки опций: lbStandard – опции прорисовываются Windows; lbOwnerDrawFixed – используется программный метод прорисовки опций, каждая из опций имеет одинаковую высоту; lbOwnerDrawVariable – используется программный метод прорисовки опций и могут быть разной высоты. |
Для примера создадим небольшую программу. Разместим компонент CheckListBox зададим ему список Items. Под ним разместим memo, в него будут выводиться выбранные элементы. И две кнопки 1 и 2. Первая будет выводить в memo выделенный синим цветом элемент, а вторая — будет выводить в memo помеченные галочкой элементы.
для первой кнопки обработчик будет следующий
1 2 3 4 5 6 7 8 9 10 11 | procedure TForm8.Button1Click(Sender TObject); var I integer; begin Memo1.Clear; for I = 0 to CheckListBox1.Items.Count - 1 do begin if CheckListBox1.selected[i] then Memo1.Lines.Add(CheckListBox1.Items[i]); end; end; |
для второй
1 2 3 4 5 6 7 8 9 10 11 | procedure TForm8.Button2Click(Sender TObject); var I integer; begin Memo1.Clear; for I = 0 to CheckListBox1.Items.Count - 1 do begin if CheckListBox1.Checked[i] then Memo1.Lines.Add(CheckListBox1.Items[i]); end; end; |