VisDbLabel Описание класса
VisDbLabel служит для отображения и редактирования
данных хранящихся в базах данных (БД).

Внимание! Компонент создан на основе VisLabel
в режиме "очень надо", требует доработки.
Информация может быть статической или динамически изменяющейся.
Статическая информация задаётся при помощи свойства text,
при этом свойство script должно быть пустым.
Для реализации динамической метки необходимо задать скрипт
изменения информации (script). В процессе работы
проекта, происходит периодический вызов скрипта, который может изменить
текст и вид метки.
Родительский класс: VisBase
Объект данного класса должен быть частью (дочерним объектом) одного из
потомков VisContainer.
Свойства
объекта
Описание
свойств
text
Текст метки.
pos
Положение метки.
size
Размер метки.
font
Стиль шрифта.
textColor
Цвет текста.
backgroundColor
Цвет фона метки.
autoFillBackground
Закрашивать фон.
Значение параметра равное "true" говорит что фон метки должен быть закрашен,
инача фон прозрачный.
shadow
Вид рамки вокруг метки.
Plain - плоская
Raised - выпуклая
Sunken - утопленная
shape
Стиль рамки вокруг метки.
alignment
Выравнивание текста.
wordWrap
Перенос слов.
script
Периодически исполняемый скрипт.
Скрипт - периодически вызываемая подпрограмма, позволяющая изменять
информацию и внешний вид метки.
controller
Контроллер действий пользователя.
ctrlInfo
Дополнительная информация для контроллера.
db
Источник данных типа DpBaseDB.
База данных хранящая информацию для отображения.
query
Запрос возвращающий значение для отображения.
Например, запрос названия партии из базы данных весового учёта для весов
"aw01":
select b.DESCR
from MODULES m, BATCHES b
where m.name = 'aw01'
and m.IDBATCH = b.IDBATCH
queryUpdate
Запрос для обновления значения в БД.
Например, запрос названия партии из базы данных весового учёта для весов
queryOptions
Дополнительные данные для выполнения запросов.
valueEditor
Компонент для редактирования значения (не используется).
editorType
Тип редактора.
Подробнее см. "Редакторы"
editorOptions
Дополнительные данные для редактора.
Подробнее см. "Редакторы"
Редакторы предназначены для измения определённых данных в БД. Тип
редактора "editorType" определяет вид
редактора, а дополнительные данные "editorOptions"
содержат информацию о параметрах использования конкретного редактора.
Дополнительные параметрый представляют из себя набор строк, назначение
которых зависит от конкретного типа параметра.
Существующие редакторы:
etInt
Редактор целочисленного поля.
Пример для просмотра/редактирования значение поля "ARCVALSIZE" в таблице
"MODULES" базы данных весового учёта.
Свойство "query" (необходимо и достаточно для отбражения
значения):
SELECT ARCVALSIZE
FROM MODULES
where name = 'aw01'
Свойство "queryUpdate" (необходимо для редактирования
значения):
update MODULES set ARCVALSIZE = %1
where name = 'aw01'
Свойство "editorType" = etInt
Свойство "editorOptions" = ""
etString
Не реализован.
etSelectionList
Редактор для изменения текущего продукта в таблице модулей базы данных
весового учёта.
В дополнительных параметрах, в первой строке необходимо указать имя (поле -
"name") модуля.
Редактрор позволяет выбрать продукт из списка уже заданных, или добавать
новый тип продукта.
Например, настройки для просмотра/редактирования текущего продукта для
модуля "aw01".
Свойство "query" (необходимо и достаточно для отбражения
значения):
select p.NAME
from PRODUCT p, MODULES m
where (p.IDPROD = m.IDPROD)
and (m.name = 'aw01')
Свойство "editorType" = etSelectionList
Свойство "editorOptions" в первой строке должно содержать "aw01"
etBatches
Редактор предназначен для изменения значения поля текущей партии в таблице
модулей базы данных весового учёта.
В дополнительных параметрах, в первой строке необходимо указать имя (поле -
"name") модуля.
При вызове редаткора пользователь воодит название партии (строка). Для новго
значение в таблице партий производится поиск существующе партии. Если партия
с таким названием уже существует, то её id устанавливается в соответствующее
поле таблицы модулей. Если партия с таким названием не существует, то
сначала создаётся новая запись, а затем новый id партии устанавливается в
соответсвующее поле.
Далее пример настроек для просмотра/редактирования текущей партии для модуля
"aw1".
Свойство "query" (необходимо и достаточно для отбражения
значения):
select b.DESCR
from MODULES m, BATCHES b
where m.name = 'aw01'
and m.IDBATCH = b.IDBATCH
Свойство "editorType" = etBathes
Свойство "editorOptions" в первой строке должно содержать "aw01"
Скрипт может использовать объекты и функции описанные ниже.
lbl - QLabel.
Можно использовать все "public slots" объекта.
obj - собственно этот компонент (VisLabel).
Для него доступны:
void setText(QString arg) - изменить текст
QVariant getVar(int idx) - получить значение переменной
QVariant getParameterValue(int idx) - получить значение параметра
void setTextColor(QColor arg) - установить цвет текста
void setBackgroundColor(QColor arg) - установить цвет фона
void setTextColor(int arg) - установить цвет текста
void setBackgroundColor(int arg) - установить цвет фона
void show() - показать
void hide() - спрятать
QString FloatToStr(double v, int prec) - преобразовать число в строку. prec
- количество знаков после запятой.
Примеры:
Вывод процента (переменная с индексом = 0, равная процент * 10), с точностью
до десятых.
percent = obj.getVar(0);
lbl.text = obj.FloatToStr(percent/10, 1);
Вывод информации о состоянии маршрута.
state = obj.getVar(0);
switch (state) {
case 0: lbl.text = "Выключен"; break;
case 1: lbl.text = "Ожидание уст.задвижек, ДВУ..."; break;
case 2: lbl.text = "Готов к старту. Нажмите СТАРТ"; break;
case 3: lbl.text = "Запуск... Осталось " + (obj.getVar(3) - obj.getVar(1))
+ " сек" ; break;
case 4: lbl.text = "Запуск приостановлен"; break;
case 5: lbl.text = "Работает"; break;
case 6: lbl.text = "Останов... Осталось "+ (obj.getVar(4) - obj.getVar(2))
+ " сек"; break;
case 7: lbl.text = "Останов приостановлен"; break;
default:
lbl.text = "?";
}
if (state >0) {
obj.setBackgroundColor(0x00FF00);
} else {
obj.setBackgroundColor(0xCCCCCC);
}
Использование
контроллера
Без использования контроллера, при клике на метке, происходить проверка прав
на редактирование параметров и, если права есть, вызов соответствующего
редактора.
Если нам необходимо иметь возможность разрешить редактирование параметров
пользователям с другим типом прав (например, право на редактирование
маршрутов), или перед вызовом редактора задать вопрос, или после
редактирования параметров сохранить соответствующее сообщение, то необходимо
использовать один из контроллеров действий пользователя.
О контроллерах см. "Контроллер действий
пользователя".
Метка использует контроллер в режиме "проверить права - задать вопрос -
действие (вызвать редактор параметров) - сохранить сообщение".
Метка предоставляет контроллеру следующие данные:
- Тип сообщения.
- Объект сообщения.
- Текст сообщения.
- Вопрос для подтверждения вызова панели редактирования параметров.
Есть два варианта формирования этих данных - простой и расширенный.
Простой вариант.
Контроллеру передаются только объект сообщения (указывается в свойстве ctrlInfo
без использования символа ";") и, если произошло изменение параметра,
текст сообщения.
Тип сообщения производит и вопрос остаются не определёнными (на "усмотрение"
контроллера).
Расширенный вариант.
Если в свойстве ctrlInfo используется символ ";"
хотя бы один раз, то используется данный вариант.
Данные задаются в следующем порядке: "тип;объект;текст;вопрос".
Любое из полей может быть не определено, соответственно будут не определены
соответствующие данные.
Например, если мы хотим передать только вопрос, то значение свойства будет
";;;вопрос".
Внимание! Пробел является допустимым значением.
.