Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: ZРоманB от 14 Апреля 2021, 11:25:48

Название: Скрипты в шаблонах
Отправлено: ZРоманB от 14 Апреля 2021, 11:25:48
Добрый день!
Ситуация следующая имеется шаблон окна, поставил я туда кнопку и текст, в скрипте не видит текстовое поле видит только те что находятся на основном экране. Как это исправить?
Код: (delphi)
begin
  bit28.Value := SetBit(bit28.Value, 0, False);
  if bit28.AsInt = 0 then
    Text101.Text := 'Ручной';
    Text101.Color := clGray;
end.
Название: Re: Скрипты в шаблонах
Отправлено: Simple_Scada от 14 Апреля 2021, 13:31:20
Здравствуйте.

К объектам внутри шаблона/шаблонного окна нельзя обратиться напрямую через скрипты, т.к. шаблон и объекты в нём не являются реальными объектами. При запуске проекта на сервере, на основе шаблона будет создано множество реальных окон и объектов. Поэтому на этапе редактирования проекта ничего не известно о том, сколько и какие именно объекты будут созданы на основе шаблона (зависит от значений подстановок) и через скрипты к ним, конечно, обратиться не получится. Для шаблонов нужно использовать универсальные скрипты (https://simple-scada.com/help/script/script-types.html), при помощи которых можно получить доступ к объекту вызвавшему скрипт. Примеры универсальных скриптов можно найти по ссылке (https://simple-scada.com/help/script/sample-scripts.html).

Судя по приведенному скрипту, Вам требуется по нажатию на кнопку изменять бит переменной и по этой же переменой изменять текст. Кнопки позволяют работать с битами напрямую, без использования скриптов - см. свойство кнопки "Бит". Поэтому, можно связать кнопку с переменной bit28 и в свойстве "Бит" указать требуемый бит, тогда кнопка будет управлять этим битом. Текст также необходимо связать с той же переменной bit28 и написать универсальный скрипт по событию (https://simple-scada.com/help/script/general-events.html) OnDataChange объекта Текст. В качестве образца можно использовать пример №2 по ссылке (https://simple-scada.com/help/script/bit-color.html). Если требуется что-то другое, то опишите максимально подробно, что именно требуется.