Учись программированию на C++ Builder бесплатно!

Компонент CheckBox


Индикаторы с флажком CheckBox используются в приложениях в основном для того, чтобы пользователь мог включать и выключать какие-то опции, или для индикации состояния. При каждом щелчке пользователя на индикаторе его состояние изменяется, проходя в общем случае последовательно через три значения: выделение (появление черной галочки), промежуточное (серое окно индикатора и серая галочка) и не выделенное (пустое окно индикатора). Этим трем состояниям соответствуют три значения свойства компонента State: cbChecked, cbGrayed, cbUnchecked. Впрочем, эти три состояния допускаются только при значении другого свойства AllowGrayed равном true. Если же AllowGrayed = false (значение по умолчанию), то допускается только два состояния: выделенное и не выделенное. И State, и AllowGrayed можно устанавливать во время проектирования или программно во время выполнения.

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

Проверять состояние индикатора можно не только по значению State, но и по значению свойства Checked. Если Checked равно true, то индикатор выбран, т.е. State = cbChecked. Если Checked равно false, то State равно cbUnchecked или cbGrayed. Установка Checked в true во время проектирования или выполнения автоматически переключает State в cbChecked. Как и в радиокнопке, в индикаторе CheckBox надпись задается свойством Caption, а ее размещение по отношению к индикатору свойством Alignment.

Компонент CheckListBox


Еще один компонент, имеющий индикаторы - список CheckListBox. Это аналог компонента ListBox, но около каждой строки списка имеется индикатор, состояние которого пользователь может изменять. Состояния индикаторов определяют два свойства: State и Checked. Оба эти свойства можно рассматривать как индексированные массивы, каждый элемент которого соответствует индексу строки. Общее количество элементов определяется свойством Count (только для чтения). Поскольку индексы начинаются с 0, то индекс последнего элемента равен Count - 1.

Свойства State и Checked можно устанавливать программно или читать, определяя установки пользователя. В компоненте CheckListBox имеется также событие OnClickCheck, возникающее при каждом изменении пользователем состояния индикатора. Его можно использовать для обработки результатов изменения.

Пример №1


Операторы устанавливают индикатор второй строки списка CheckListBox1 в состояние выбранного, а индикатор третьей строки - в промежуточное состояние (индексы начинаются с 0):

CheckListBox1->Checked[1] = true;
CheckListBox1->State[2] = cbGrayed;

Пример №2


Оператор проверяет состояние всех индикаторов списка, и для выбранных пользователем строк осуществляет какие-то действия (в приведенном операторе на месте этих действий просто поставлено многоточие):

for (int i = 0; i < CheckListBox1->Items->Count; i++)
if (CheckListBox1->Checked[i]) {
//...
}
Поделиться