CheckBox — флажок (независимый переключатель) в Delphi | Delphi-FAQ

CheckBox — флажок (независимый переключатель) в Delphi

Флажок (независимый переключатель) отличается от переключателя тем, что в группе флажков одновременно можно установить флажки в любой комбинации (в том числе могут быть установлены или сброшены все флажки и т. д.). Флажок может находиться в установленном или сброшенном состоянии. Одиночный флажок часто используется, например, для включения/выключения какого-либо режима.

Анализ состояния переключателя или флажка позволяет программисту выполнять соответствующие операции.

Система Delphi предоставляет для работы с переключателями компоненты CheckBox, RadioButton и RadioGroup. Классы компонентов CheckBox и RadioButton, как и кнопка Button, происходят от класса TButtonControl. Поэтому иногда эти переключатели называют кнопками с фиксацией: CheckBox— с независимой фиксацией, a RadioButton — с зависимой.

CheckBox — флажок



Флажок представлен компонентом CheckBox. Флажок действует независимо от других флажков, несмотря на то, что по функциональному назначению их часто объединяют в группы с общим названием, например, Code generation, Syntax option, Runtime errors, Debugging (как на скриншоте выше).

Флажок выглядит как прямоугольник с текстовым заголовком. Если в нем есть галочка, то обозначенная этим флажком опция включена (в этом случае также говорят, что флажок отмечен). Если прямоугольник пуст, то флажок снят, или сброшен. Действия с одним флажком не отражаются на состоянии других флажков, если это не было специально предусмотрено, что на практике применяется редко.

Свойство Checked

Для определения состояния флажка используется свойство Checked типа Boolean. По умолчанию оно имеет значение False, и флажок снят.

Пользователь может переключать состояние флажка щелчком мыши. Если флажок снят (не включен), то после щелчка он будет установлен (включен), и наоборот. При этом соответственно изменяется значение свойства Checked. Флажок можно переключить и с помощью клавиши <Пробел>, когда компонент CheckBox находится в фокусе ввода, а вокруг его заголовка отображен черный пунктирный прямоугольник.

  1. if CheckBox1.Checked then MessageDlg('Время истекло!', mtError, [mbOK], 0);

В примере сообщение «время истекло!» выдается при включенном состоянии флажка CheckBox1, который регулирует выдачу сообщения об истечении лимита времени.

Флажком можно управлять программно, устанавливая свойство Checked в требуемые значения. Например:

  1. CheckBox2.Checked := True;
  2. CheckBox3.Checked := False;

Свойство Enabled

Сделать флажок недоступным для изменения (заблокировать) можно установив свойство Enabled в значение False: CheckBox1.Enabled := False;

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

Кроме двух состояний (установлен/снят) флажок может иметь и третье состояние — запрещенное, или недоступное. Наличием или отсутствием этого состояния управляет свойство AllowGrayed типа Boolean. Если оно имеет значение True, то при щелчке мышью происходит циклический переход между тремя состояниями флажка: установлен, снят и недоступен. В недоступном состоянии флажок выделен серым цветом, а в прямоугольнике находится знак галочки.

Галочка, отображаемая флажком в недоступном состоянии, способна ввести в заблуждение, т. к. подобное состояние можно интерпретировать как включенное.

Свойство Checked имеет значение True только для выбранного режима флажка.

Cвойство State

Для анализа и установки одного из трех состояний флажка служит свойство State типа TCheckBoxstate. Оно может принимать следующие значения:

  • cbUnchecked (флажок не включен);
  • cbChecked (флажок включен);
  • cbGrayed (флажок недоступен).

Cобытие OnClick

При изменении состояния флажка возникает событие OnClick, независимо от того, в какое состояние он переходит. В обработчике события OnClick обычно располагаются инструкции, проверяющие состояние флажка и выполняющие требуемые действия.

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

  1. procedure TForm1.CheckBox3Click(Sender: TObject) ;
  2. begin
  3. сase CheckBox3.State of
  4. cbUnchecked: CheckBox3.Caption := 'Флажок не включен';
  5. cbChecked: CheckBox3.Caption := 'Флажок включен';
  6. cbGrayed: CheckBox3.Caption := 'Флажок недоступен';
  7. end;
  8. end;

Флажок CheckBox3 при его переключении отображает в заголовке свое состояние.

Метки: ,
Если Вам интересна эта запись, Вы можете следить за ее обсуждением, подписавшись на RSS 2.0 .

Оставить комментарий или два

*