Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Дмитрий К от 25 Июля 2024, 13:32:57

Название: Доступ к переменной из шаблона
Отправлено: Дмитрий К от 25 Июля 2024, 13:32:57
Здравствуйте! Не увидел в справке как можно обратиться к переменной из скрипта шаблона.

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

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

Думал, что можно через Sender каким-то образом получить объект шаблона, а у него перейти к полю подстановки %sensor_name%...
Название: Re: Доступ к переменной из шаблона
Отправлено: Timothy Clement от 25 Июля 2024, 14:05:10
Добрый день, объект шаблона можно получить функцией GetTemplateObject, а затем соответственно обратится к свойствам объекта, переменная и т.д
Название: Re: Доступ к переменной из шаблона
Отправлено: Дмитрий К от 25 Июля 2024, 16:02:45
Да, это я понимаю. Допустим я обратился к полю с переменной %sensor_name%_value. Но как мне вычленить оттуда %sensor_name%, чтобы потом суметь составить новую переменную %sensor_name%_switch_unit и присвоить ей значение TRUE?
Название: Re: Доступ к переменной из шаблона
Отправлено: Timothy Clement от 25 Июля 2024, 16:22:46
Может я все ещё не до конца понял, но можно сделать так:
Полю которое выводит единицы измерения в свойство Hint записать %sensor_name%
либо сразу переменную %sensor_name%_switch_unit присвоить свойству этого поля  "VariableEx"
Название: Re: Доступ к переменной из шаблона
Отправлено: Дмитрий К от 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.
Название: Re: Доступ к переменной из шаблона
Отправлено: Simple Scada от 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 (https://simple-scada.com/help/script/variableex.html).