Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Как в скрипте указать цвет фона для поля?  (Прочитано 3669 раз)

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Значит я хочу поменять цвет поля отображающего темературу, если она упадет ниже уставки на красный. Использую вот такой код.

Код
begin
  if Sender is TM_Field then
    with Sender as TM_Field do
       if AsFloat < varTempAlert then
         Color := clFireBrick;
end.     

Значит у меня 2 проблемы.

1. Я не знаю имя свойства цвета фона по этому пока просто назначаю Color. Сделайте так что бы на свойстве хотябы хинт вылетал как имя свойства по английски в скриптах.

2. У меня это не компилируется. Ошибка что тип дабл и TM_Variable не компатабл. Что мне тут выбрать? В ОПС у меня переменная типа флоат. Переменная varTempAlert пока внутренняя для провеки, я пробовал делать и сингл и дабл, ошибка таже.
« Изменён: 21 Августа 2017, 09:19:53 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Как имя свойства цвета фона для поля?
« Ответ #1 : 18 Августа 2017, 18:58:07 »
Здравствуйте!

Цитировать
Значит я хочу поменять цвет поля отображающего темературу, если она упадет ниже уставки на красный.
Для этого не обязательно писать скрипт - можно использовать граничные значения переменной, которые можно задать на вкладке свойств переменной "Дополнительные". Имеется возможность менять граничные значения переменной из клиента Simple-Scada - подробнее см. здесь.

Скрипт не компилируется, потому что varTempAlert это переменная, а не ее значение. Если необходимо сравнить вещественные значения, то нужно в скрипте написать varTempAlert.AsFloat - значение переменной varTempAlert, переведенное в вещественное число (или varTempAlert.Value). Список свойств значений переменной можно найти здесь.

Цитировать
Я не знаю имя свойства цвета фона по этому пока просто назначаю Color. Сделайте так что бы на свойстве хотябы хинт вылетал как имя свойства по английски в скриптах.
При написании скрипта нажав "Ctrl + Пробел" можно увидеть список доступных методов, а кликнув по методу увидеть его описание. Ознакомьтесь с рекомендациями по работе со скриптами - там описано как можно быстро получить нужный метод. Также, в руководстве по скриптам можно посмотреть все доступные свойства для любого объекта. У объекта "Поле" цвет фона это Color.

Правильный скрипт:
Код
begin
  if Sender is TM_Field then
    with Sender as TM_Field do
       if AsFloat < varTempAlert.AsFloat then
         Color := clFireBrick;
end.
« Изменён: 18 Августа 2017, 19:00:20 от Simple-Scada »

Serhioormano

  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Re: Как имя свойства цвета фона для поля?
« Ответ #2 : 20 Августа 2017, 09:15:39 »
Понятно. Но по гарницам нет.

У меня 3 переменные. Одна текущая температура, другая минимальная уставка. Мне нужно что бы авария срабатывала если темперетура опускатся ниже уставки. То что в настроках переменно это фиксированое значение. Я могу в поле аварийного значения, ввести имя переменной?

Еще вопрос по свойству рабоать с. Как это мне поможет? Если я выберу рабоатть с нижним пределом, то он будет отображаться, а мне нужно отображать текущую температуру.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Как имя свойства цвета фона для поля?
« Ответ #3 : 21 Августа 2017, 09:19:02 »
Цитировать
У меня 3 переменные. Одна текущая температура, другая минимальная уставка. Мне нужно что бы авария срабатывала если темперетура опускатся ниже уставки. То что в настроках переменно это фиксированое значение. Я могу в поле аварийного значения, ввести имя переменной?
Как раз для такого случая можно использовать граничные значения переменной. Их можно менять из клиента Simple-Scada. Прочитайте внимательно этот раздел и посмотрите пример реализации в демо-проекте -> страница "Генерируемые сообщения" -> пример №3. Но учитывайте, что при таком подходе переменные уставок обрабатываются и сохраняются средствами скады и переменные на контроллере использовать не получится. Если Вам нужно использовать именно переменные контроллера, то генерируемые сообщения не подойдут и нужно использовать вариант со скриптами, т.е. в скрипте по событию OnDataChange проверять нарушены ли уставки и выдавать сообщения при помощи процедуры AddMessage или Message.Show.

Цитировать
Еще вопрос по свойству рабоать с. Как это мне поможет? Если я выберу рабоатть с нижним пределом, то он будет отображаться, а мне нужно отображать текущую температуру.
Как Вы написали, имеется 3 переменных - текущая температура(например vrTemp), минимальная уставка и максимальная уставка. Значит нужно создать 3 поля. Затем все три поля связать с переменной температуры vrTemp. У поля, которое будет отвечать за изменение нижней уставки установить свойство "Работать с" - нижней аварийной границей. У поля, которое будет отвечать за изменение верхней уставки установить свойство "Работать с" - верхней аварийной границей. Теперь, если у поля текущей температуры активировать свойство "Границы" оно будет подсвечиваться при нарушении установленных границ. Причем границы можно изменять из клиента через наши созданные поля. Также, по этим границам можно сделать вывод автогенерируемых сообщений - подробнее здесь.
« Изменён: 21 Августа 2017, 09:36:13 от Simple-Scada »