Компонент Delphi CheckListBox находиться на странице Additional Палитры компонентов. Он имеет много общего с компонентом ListBox и основные их свойства совпадают. Главное отличие его состоит в наличии значка для выбора, где можно поставить галочку, слева от элемента списка.
Данный компонент предназначен для множественного выбора элементов, т.е. мы можем выбрать все элементы списка или не одного, как нам необходимо. Поэтому свойства MultiSelect у него нет.
На основе свойства Selected происходит анализ состояния элементов в списке. Это свойство указывает не состояние расположенных слева переключателей, а номер элемента, в текущий момент находящийся в активном состоянии.
А положения переключателей определяют два свойства: Checked и State. Эти два свойства можно представить как индексированные массивы, элементы которых соответствуют индексу строк. Установить их программно таким образом:
CheckListBox1.Checked[5] := true; CheckListBox1.State[1] := cbGrayed;
Свойство AllowGrayed, будучи установленным в TRUE, дает возможность воспользоваться третьим промежуточным состоянием.
Разместим на форме компонент CheckListBox, как показано на рисунке. Зададим список Items, воспользовавшись инспектором объектов. Под ним расположим memo, в нем будут выводиться выбранные нами элементы. И еще две кнопки.
Первая с именем Selected будет выводить выделенный синим активный элемент, а вторая - Cheched будет выводить помеченные галочкой элементы.
Обработчики событий этих кнопок будут такие: для Selected -
procedure TForm1.BitBtn1Click(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;
Для Checked -
procedure TForm1.BitBtn2Click(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;
Итог: был рассмотрен компонент Delphi CheckListBox его применение в программах.