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

Комбинированный список (VisComboBox) предназначен для выбора одного значения из списка возможных.

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

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

Компонент VisComboBox должен быть связан с одним из тегов EqVarSet. Каждому возможному значеню тега (тег должен быть целочисленным), необходимо создать элемент в списке items.

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

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

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

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

## items

Список возможных значений тега.

## pos

Положение списка.

## size

Размер списка.

## font

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

## script

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

## eqVarSet

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

## varIndex

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

## controller

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

## ctrlInfo

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

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

## cbx - QComboBox.

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

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

## Пример:

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

`state = obj.getVar(1);`

`cbx.setEnabled(state);`

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

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

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

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

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

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

Например, для значение ";Маршрут №2. Бункер назначения;Переключить на другой бункер?":

- тип сообщения будет определяться контроллером, так как здесь не указан.
- объект - Маршрут №2. Бункер назначения
- будет задан вопрос: "Переключить на другой бункер?"

Внимание! Пробел является допустимым значением.
.