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

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

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 1245294 раз)

aMster

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1680 : 07 Июня 2026, 20:38:27 »
Спасибо.

Еще вопрос
Имеется текстовое поле, к нему привязана переменная из opc сервера.
Проверить в скрипте содержимое у меня получается через поле .text
А вот изменить его содержимое не получилось, скрипт вроде отработал, а значения не поменялись.
пришлось лезть через .value, то есть к привязанной переменной.
Соответственно это достаточно долго.
Что-то упустил?
« Изменён: 07 Июня 2026, 20:47:40 от aMster »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1414
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1681 : 07 Июня 2026, 21:29:59 »
Здравствуйте.

Для изменения значения не нужно использовать скрипты - введите новое значение в поле и нажмите клавишу Enter. Если все же требуется изменить значение через скрипт, то для этого нужно менять значение переменной через свойство Value.

Цитировать
Проверить в скрипте содержимое у меня получается через поле .text. А вот изменить его содержимое не получилось
Изменить содержимое поля через свойство Text получится только в случае, когда поле не связано с переменной.

aMster

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1682 : 08 Июня 2026, 07:56:49 »
Потребовалось реализовать восстановление набора уставок ( несколько полей). В голову только скрипт по нажатию кнопки пришел.
а событие "OnDoneInputEvent" не поможет?
« Изменён: 08 Июня 2026, 14:45:58 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1414
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1683 : 08 Июня 2026, 15:04:07 »
Сохранение/восстановление значений внешних переменных обычно реализуется на ПЛК. Если такой возможности нет и требуется записать значения сразу в несколько переменных, то подойдет вариант с записью по нажатию на кнопку (событие "OnClick").

Цитировать
а событие "OnDoneInputEvent" не поможет?
Нет. Как мы уже писали ранее, для изменения значения достаточно ввести новое значение в поле и нажать клавишу Enter. Если требуется записать значения в несколько разных переменных, то можно использовать скрипт по нажатию на кнопку.

titanicnwa

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1684 : 16 Июля 2026, 11:27:29 »
Подскажите как в скрипте из события OnEnter объекта Page получить имя текущей подстраницы?
В Руководстве по скриптам не нашел описание объекта TM_Subpage

pan2000

  • Постоялец
  • ***
  • Сообщений: 229
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #1685 : 17 Июля 2026, 01:50:36 »
   Здравствуйте.

Подскажите как в скрипте из события OnEnter объекта Page получить имя текущей подстраницы?
В скрипте OnEnter объекта Page нет возможности получить имя текущей подстраницы. При переходе на страницу (подстраницы ещё скрыты) однократно последовательно вызываются скрипты OnEnter и OnEnterSubpage текущей подстраницы, далее при переходам по подстраницам вызывается скрипт OnEnterSubpage.
Следовательно, достаточно поместить текст обработки имени текущей подстраницы в скрипт OnEnterSubpage и обеспечить однократность его выполнения при первом вызове. В универсальных скриптах для флажка однократности можно использовать свойство Tag страницы.
Скрипт OnEnter:
Код: (delphi)
begin
  Sender.Tag := 0;       // 0 - скрипт OnEnterSubpage ещё не вызывался
end.
Скрипт OnEnterSubpage:
Код: (delphi)
begin
  with TM_Subpage(Sender).OwnerPage do         // страница для текущей подстраницы
    if Tag = 0 then
    begin
      Tag := 1;    // однократность вызова скрипта при переходе по подстраницам
// действия по обработке имени текущей подстраницы

      Text1.Text := Text1.Text + 'ПЕРЕХОД: Page=' + Name + '    SubPage=' + TM_Subpage(Sender).Name + #10;

    end;
  Window1.ShowAll;
end.
Пример из вложения показывает список имён последних активных подстраниц перед переходом к другой странице.

P.S. Если Tag занят, то в качестве флага и имени подстраницы можно использовать строковую переменную. Для универсальности скриптов имя переменной должно быть связано с именем страницы, например так: vrSubPageName_<Имя страницы>.
« Изменён: 17 Июля 2026, 16:32:26 от pan2000 »