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

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

Автор Тема: скрипт изменения цвета трубопровода  (Прочитано 1549 раз)

vasiabel08

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Добрый день, не могу создать скрипт изменения цвета трубопровода по двум битовым переменным (Boolean). На трубопроводе два насоса, нужно менять цвет в зависимости какой насос включен, завел один насос на основную переменную, второй на дополнительную. Пробывал скрипты с примеров, при компиляции проблем нет, начинаю сохранять проект ругается на неправильно скомпилированный скрипт. Может кто выложить пример скрипта?

pan2000

  • Постоялец
  • ***
  • Сообщений: 210
    • Просмотр профиля
Re: скрипт изменения цвета трубопровода
« Ответ #1 : 07 Июня 2024, 11:19:26 »
    Здравствйте.

В зависимости от желаемого правила изменения можно менять цвет с учетом двух переменных (один скрипт на оба события изменения переменных):
Код: (delphi)
begin
  with Sender as TM_Object do
    case SetBit(SetBit(0, 0, AsBool), 1, VariableEx.AsBool) of
    0: Color := clGray;     // оба выключены
    1: Color := clLime;     // насос с управлением по основной переменной
    2: Color := clYellow;   // насос с управлением по дополнительной переменной
    3: Color := clRed;      // а это - оба сразу !
    end;
end.
или независимо по каждой переменной:
Код: (delphi)
begin
  with Sender as TM_Object do
    if AsBool then Color := clLime else Color := clGray;
end.
Код: (delphi)
begin
  with Sender as TM_Object do
    if VariableEx.AsBool then Color := clYellow else Color := clGray;
end.
Пример во вложении.
« Изменён: 07 Июня 2024, 11:26:19 от pan2000 »

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 246
    • Просмотр профиля
    • Simple-Scada
Re: скрипт изменения цвета трубопровода
« Ответ #2 : 07 Июня 2024, 11:37:11 »
Здравствуйте.

Для работы с дополнительной переменной необходимо использовать свойство переменной VariableEx. Также, Вы можете ознакомиться с этим разделом руководства - в нем рассмотрены частые ошибки при работе со скриптами, в том числе и ошибки в скриптах по событию OnDataChangeEx.

Если Вы используете две отдельные Boolean переменные, то можно создать скрипт с типом события "Универсальный скрипт" и использовать следующий код:
Код: (delphi)
begin
  if Sender is TM_Object then   // проверяем, что Sender это объект
    with Sender as TM_Object do // приводим Sender к типу "TM_Object"
      if (AsBool) or (VariableEx.AsBool) then   // если значение основной или дополнительной переменной объекта равно True, то
        Color := clGreen        // изменить цвет объекта на зеленый
      else                      // иначе
        Color := clRed;         // изменить цвет объекта на красный
end.
Далее назначить этот скрипт на события "OnDataChange" и "OnDataChangeEx" для трубопровода. Теперь, если одна из переменных будет True, то трубопровод будет зеленым, иначе – красным.
« Изменён: 07 Июня 2024, 11:56:54 от Simple_Scada »

vasiabel08

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: скрипт изменения цвета трубопровода
« Ответ #3 : 08 Июня 2024, 07:19:27 »
Всем большое спасибо, просто в скриптах я пока не сильно разбираюсь)))