# VisCheckBox Описание класса

VisCheckBox (флажок) предназначен для установки и отображения одного из двух (0/1) значения тега (переменной).

Флажки позволяют определить дополнительные параметры в логике работы программы.

Для примера, на рисунке показанна группа флажков позволяющая выбрать один или несколько бункеров из которых необходимо брать продукт.

Каждый компонент VisCheckBox должен быть связан с одним из набора тегов EqVarSet.

Если перед изменением значения тега необходимо проверить права оператора, и/или задать допольнительный вопрос, и/или сохранить соответствующее сообщение, то необходимо воспользоватся контроллером действий.
Родительский класс: VisBase
Объект данного класса должен быть частью (дочерним объектом) одного из потомков VisContainer.

# Свойства объекта

- text
- pos
- size
- font
- script
- eqVarSet
- varIndex
- controller
- ctrlInfo

# Описание свойств

## text

Подпись рядом с флажком.

## pos

Положение флажка.

## size

Размер флажка.

## font

Стиль шрифта.

## script

Периодически исполняемый скрипт.
Скрипт - периодически вызываемая подпрограмма, позволяющая изменять информацию и внешний вид флажка.

## eqVarSet

Ссылка на набор тегов.
Данное свойство должно содержать ссылку на набор тегов (EqVarSet).
Набор тегов и индекс varIndex определяют тег, управлять которым и отображать его текущее состояние будет флажок.
Кроме того набор тегов может использовать в процессе выполнения скрипта для получения значений других тегов. Доступ к значениям тегов осуществляется по индексу тега в наборе. Например, для получения значения первого (индекс = 0) тега необходимо использовать выражение obj.getVar(0).

## varIndex

Индекс тега.
Свойство определяет индекс (место в списке) тега. Перый в списке тег имеет индекс = 0.

## controller

Контроллер действий пользователя.

## ctrlInfo

Дополнительная информация для контроллера.

# Использование скрипта

## cbx - QCheckBox.

Можно использовать все "public slots" объекта.

## obj - собственно этот компонент (VisCheckBox).

## Пример:

В зависимости от значения тега с индексом 1, текущий флажок будет (не)доступен для редактирования.

`state = obj.getVar(1);`

`cbx.setEnabled(state);`

# Использование контроллера

Если перед изменением значения тега необходимо проверить права оператора, и/или задать допольнительный вопрос, и/или сохранить соответствующее сообщение, то необходимо использовать один из контроллеров действий пользователя.
О контроллерах см. "Контроллер действий пользователя".
Флажок использует контроллер в режиме "проверить права - задать вопрос - сохранить сообщение - действие".
Флажок предоставляет контроллеру следующие данные:

1. Тип сообщения.
2. Объект сообщения.
3. Текст сообщения.
4. Вопрос для подтверждения действия.

Есть два варианта формирования этих данных - простой и расширенный.
Простой вариант.
Контроллеру передаются только объект сообщения (указывается в свойстве ctrlInfo без использования символа ";". Текст сообщения будет "0" или "1", в зависимости от нового состояния флажка.
Тип сообщения и вопрос остаются не определёнными (на "усмотрение" контроллера).
Расширенный вариант.
Если в свойстве ctrlInfo используется символ ";" хотя бы один раз, то используется данный вариант.
Данные задаются в следующем порядке: "тип;объект;текст0;текст1;вопрос0;вопрос1".

- тип - тип сообщения (например, "Измениение режима работы")
- объект - объект сохранивший сообщение (например, "Маршрут №2. Бункер 1")
- текст0 - текст сообщения при неактивном новом состоянии флажка (например, "Выключен")
- текст1 - текст сообщения при активном новом состоянии флажка (например, "Включен")
- вопрос0 - вопрос задаваемый пользователю перед переходом в неактивное состоянии (например, "Выключить?")
- вопрос1 - вопрос задаваемый пользователю перед переходом в активное состоянии (например, "Включить?")

Любое из полей может быть не определено, тогда будут использованные значения "по умолчанию".
Внимание! Пробел является допустимым значением.
.