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

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

Автор Тема: Скрипт по событию OnDataChangeEx  (Прочитано 1509 раз)

EvgeniySM

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Скрипт по событию OnDataChangeEx
« : 13 Октября 2020, 07:08:31 »
Здравствуйте.
Никак не могу понять, как работает и работает ли вообще выполнение скриптов по событию OnDataChangeEx. Создаю 2 переменные типа BOOL. Создаю объект Shape (квадратную фигуру). Одну из переменных назначаю этой фигуре как основную, другую как дополнительную. Пишу 2 универсальных скрипта, один для поворота фигуры на 45 градусов, другой - на изменение цвета в зависимости от значений привязанных переменных. Назначаю эти скрипты на события OnDataChange и OnDataChangeEx Ниже привожу код скриптов:
Изменение угла поворота:
Код: (delphi)
begin
If Sender is TM_Object then
 with Sender as TM_Object do
  if AsInt = 1 Then
   Angle := 45
    Else
     Angle := 0;
end.

Изменение цвета:
Код: (delphi)
begin
If Sender is TM_Object then
 with Sender as TM_Object do
  if AsInt = 1 Then
   Color := ClRed
    Else
     Color := RGB(191,191,191);
end.
По моей логике должно работать так: изменяю основную переменную - фигура должна поворачиваться, изменяю дополнительную - фигура должна менять цвет. Эти события не должны зависеть друг от друга и срабатывать всякий раз, когда я меняю любую из привязанных переменных.

Вывожу на лист проекта эту фигуру и два поля, где можно менять привязанные переменные. При изменении основной переменной, которая отвечает за поворот фигуры скрипт отрабатывает без замечаний. А вот при изменении дополнительной переменной скрипт не работает совсем. Но однако, если я один раз меняю основную переменную, потом дополнительную, скрипт по событию OnDataChangeEx выполняется  один раз. Снова меняю дополнительную переменную - скрипт по событию OnDataChangeEx не выполняется. Что я делаю не так?

Версия SS2 - 2.3.6.7

Разобрался, немного почитав форум, в скрипте на событие OnDataChangeEx надо проверять условие на изменение дополнительной переменной, вот так:  if VariableEx.AsInt = 1 Then ... Тогда всё будет работать.
« Изменён: 13 Октября 2020, 09:17:52 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Re: Скрипт по событию OnDataChangeEx
« Ответ #1 : 13 Октября 2020, 09:25:57 »
Здравствуйте.

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