procedure OnCellClick(Cell: TM_TableCell);
procedure OnCellDatachange(Cell: TM_TableCell);
procedure myScript(Sender: TM_Control);
Каким образом можно отследить изменение значения в ячейке?На изменение границ событие не предусмотрено, поэтому отследить их изменение не получится.
Также в Скаде было выявлено отсутствие проверки "предупредительная_граница <= аварийной_границы" при изменении значения предупредительной границы. Хорошо бы поправить это в будущем.Вы используете последнюю версию SImple-Scada 2.3.6.3? Мы улучшали работу с границами в этой версии.
На изменение границ событие не предусмотрено, поэтому отследить их изменение не получится.Возникает только идея сделать соответствующее количество переменных и писать в них значения границ, а там уже делать нужные действия.
Вы используете последнюю версию SImple-Scada 2.3.6.3? Мы улучшали работу с границами в этой версии.Да, версия последняя. Помню раньше писал "вручную" через скрипты, там по привышению пред.>авар. в предупредительную границу записывалось значение аварийной. В данном же случае изменение происходит через свойство объекта "работать с граничным значением переменной". Запись в ячейку происходит, а что на деле в саму границу пишет ещё не проверял...
Также в Скаде было выявлено отсутствие проверки "предупредительная_граница <= аварийной_границы" при изменении значения предупредительной границы. Хорошо бы поправить это в будущем.Перепроверили несколько раз, с таблицей, уровнями и полями, всегда работает правильно, версия 2.3.6.3. Можете уточнить что значит "отсутствие проверки "предупредительная_граница <= аварийной_границы""? При изменении предупредительной границы выполняется проверка значения переменной и если оно ниже предупредительной границы, то ячейка остаётся бесцветной, а если выше, то окрашивается в желтый цвет.
Помню раньше писал "вручную" через скрипты, там по привышению пред. > авар. в предупредительную границу записывалось значение аварийной. В данном же случае изменение происходит через свойство объекта "работать с граничным значением переменной".Все свойства граничных значений в скриптах (HighAlarm, HighWarning, LowWarning и LowAlarm) привязаны правильно и не менялись с начала разработки Simple-Scada 2, поэтому непонятно как меняя предупредительную границу можно изменить аварийную. Вы уверены что не перепутали свойства в скриптах? Также нужно учитывать что при включенном сохранении граничных значений они будут загружаться из файла на жестком диске, а не из настроек переменной (https://simple-scada.com/help/manual/index.html?variable-new.html#var_dop). Если у Вас есть пример проекта с неправильным присвоением границ, то просьба выслать его для проверки на support@simple-scada.con.
Перепроверили несколько раз, с таблицей, уровнями и полями, всегда работает правильно, версия 2.3.6.3. Можете уточнить что значит "отсутствие проверки "предупредительная_граница <= аварийной_границы""? При изменении предупредительной границы выполняется проверка значения переменной и если оно ниже предупредительной границы, то ячейка остаётся бесцветной, а если выше, то окрашивается в желтый цвет.
непонятно как меняя предупредительную границу можно изменить аварийную.Аварийная граница не меняется. Когда значение записывалось через скрипты, при условии, что предупр.>аварийной, в предупредительную границу записывалось значение аварийной. На тот момент опция "сохранение граничных значений" не была выставлена.
Нет проверки, когда в предупредительную границу записывается значение выше аварийной.Понятно, спасибо за подробное описание, мы сначала подумали что цвет ячеек не меняется при смене границ. Рассмотрим добавление проверки на пересечение границ при вводе нового значения.
У таблиц есть событие OnCellDatachange. Можно ли как-то по этому событию понять в какой ячейке поменялась переменная и сделать что-то с соседней ячейкой (например, в столбце aCol + 1)?В событие OnCellDatachange передаётся параметр Cell типа TM_TableCell, это та ячейка в которой изменилось значение. Все свойства ячеек описаны здесь (https://simple-scada.com/help/script/tmtablecell.html). Обратите внимание на свойства Col и Row - это номер столбца и номер строки ячейки в таблице. Таким образом получить соседнюю ячейку (справа от текущей) можно так:
var
aCell: TM_TableCell;
begin
aCell := Table1.GetCell(Cell.Col + 1, Cell.Row);
end.
Возможно ли как-то убирать фокус с выбранной строки таблицы (делать что-то по типу RowIndex := -1)?Нет, у каждого клиента этот индекс свой и изменить его с сервера (через скрипт) не получится, поэтому свойство RowIndex доступно только для чтения.