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

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

Автор Тема: Доступ к переменной из шаблона  (Прочитано 8614 раз)

Дмитрий К

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Здравствуйте! Не увидел в справке как можно обратиться к переменной из скрипта шаблона.

Есть шаблон с подстановкой %sensor_name%. Внутри шаблона есть поле, с внешней переменной '%sensor_name%_value'. Рядом есть поле, которое отображает единицу измерения. В ПЛК есть функция, которая позволяет конвертировать единицу измерения по команде.

Я хочу, чтобы при нажатии на поле с ед. измерения, включалась переменная '%sensor_name%_switch_unit'. Но никак не могу понять как это сделать.

Думал, что можно через Sender каким-то образом получить объект шаблона, а у него перейти к полю подстановки %sensor_name%...

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Доступ к переменной из шаблона
« Ответ #1 : 25 Июля 2024, 14:05:10 »
Добрый день, объект шаблона можно получить функцией GetTemplateObject, а затем соответственно обратится к свойствам объекта, переменная и т.д

Дмитрий К

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Доступ к переменной из шаблона
« Ответ #2 : 25 Июля 2024, 16:02:45 »
Да, это я понимаю. Допустим я обратился к полю с переменной %sensor_name%_value. Но как мне вычленить оттуда %sensor_name%, чтобы потом суметь составить новую переменную %sensor_name%_switch_unit и присвоить ей значение TRUE?

Timothy Clement

  • Постоялец
  • ***
  • Сообщений: 166
  • ОАО Борисовский завод "Металлист"
    • Просмотр профиля
    • Полымя
Re: Доступ к переменной из шаблона
« Ответ #3 : 25 Июля 2024, 16:22:46 »
Может я все ещё не до конца понял, но можно сделать так:
Полю которое выводит единицы измерения в свойство Hint записать %sensor_name%
либо сразу переменную %sensor_name%_switch_unit присвоить свойству этого поля  "VariableEx"

Дмитрий К

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Доступ к переменной из шаблона
« Ответ #4 : 25 Июля 2024, 16:50:18 »
Так работает. Спасибо за помощь!  :)

Код
var
  sensor_name : string;
  variable: TM_Variable;
begin
  sensor_name := GetTemplateObject('fld_sensor_value').Hint;
  variable :=  GetVariableByName(sensor_name + '_units_switch_unit_cmd');
  if variable <> nil then
    variable.Value := true;
end.

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 284
    • Просмотр профиля
    • Simple-Scada
Re: Доступ к переменной из шаблона
« Ответ #5 : 26 Июля 2024, 10:35:45 »
Здравствуйте.

Рекомендуем использовать второй способ, который указал Timothy Clement:
Цитировать
либо сразу переменную %sensor_name%_switch_unit присвоить свойству этого поля "VariableEx"
Для этого в свойство "Доп. переменная" укажите переменную "%sensor_name%_switch_unit" и на событие "OnClick" объекта используйте скрипт:
Код: (delphi)
begin
  if Sender is TM_Object then   // проверяем, что Sender это объект
    (Sender as TM_Object).VariableEx.Value := True;
end.
Для работы с дополнительной переменной объекта необходимо использовать свойство VariableEx.
« Изменён: 26 Июля 2024, 10:47:10 от Simple_Scada »