процедуры OnStartScript, OnStopScript

Avatar
  • обновлен
  • На рассмотрении

Добрый день!

Вопрос о работе процедур OnStartScript, OnStopScript.


Изначально в SL присутствовала функция AsFirstRun. Понимаю её работу так: функция позволят один раз выполнить какие-то действия при старте Монитора. Как правило это установка значений каналов и переменных в начальные значения, или возврат к значениям, которые были в наличии при: крахе Монитора, перезапуске Монитора, ... и др.


Затем появились процедуры OnStartScript, OnStopScript.
Из названия которых, я посчитал (скорей всего ошибочно), что теперь есть возможность при старте любого скрипта (прописанного в каком-либо канале) выполнить первоначальные действия - затем выполнить собственно тело скрипта - затем, после отработки скрипта, выполнить завершающие действия.


Поясню на конкретном примере.

Возникла необходимость в подсчете статистики работы оборудования.

Значит необходимо отобразить на экране окно (мнемосхему), где пользователь:

- проставляет "галочки" напротив необходимого оборудования;

- устанавливает начальную и конечную даты;

- нажимает кнопку "Подсчет"

- в объекте "многострочный текст" видит результат расчета.


Так вот, столкнулся с задачей - как при вызове окна/мнемосхемы отобразить начальное состояние всех параметров выбора, т.е. все чекбоксы сброшены, первоначальная дата указывает на начало прошедшего месяца, конечная дата указывает конец прошедшего месяца, а окно результата показывает пустоту.

Когда я увидел, что отображаются параметры выбора прошлого сеанса, то вспомнил про процедуры OnStartScript, OnStopScript. Но! Не тут то было. Эти процедуры отрабатывают также как и AsFirstRun (только при запуске и закрытии Монитора).


Вопросы:

1) OnStartScript, OnStopScript отрабатывают только при запуске и закрытии Монитора?

2) Есть ли возможность запуска скрипта при открытии или закрытии окна\мнемосхемы ?

3) Нельзя ли в список объектов добавить объект чекбокс: т.е. при нажатии на него он меняет свое отображение и производит запись соответствующего значения в прикрепленный канал логического типа. Пока приходится лепить из двух объектов: кнопка (которая записывает значение 0 или 1 в канал логического типа) и объекта изображение (который отображает состояние канала логического типа)


Может быть я неправильно использую процедуры. Поправьте меня.
Вот пример моего использования:


void onStartScript()
{
   ShowMessageBox("---","Начало",3) ;
}
void onStopScript()
{
   ShowMessageBox("---","Конец",3)   ;
}
{
  WriteValue("test","yes"+"\n"+"no");
}


С уважением, Кондратенко Анатолий

Новочеркасск

Avatar
СИМП Лайт (тех поддержка)
  • На рассмотрении

День добрый.


1) OnStartScript, OnStopScript отрабатывают только при запуске и закрытии Монитора?


Да, все верно.


2) Есть ли возможность запуска скрипта при открытии или закрытии окна\мнемосхемы ?


На данный момент - нет. Можно попробовать следующую реализацию - вирт. канал со скриптом по событию. В скрипте будет инициализация нужных переменных и открытие мнемосхемы. Соответственно по кнопке будет запускаться скрипт и открывать нужную мнемосхему.


3) Нельзя ли в список объектов добавить объект чекбокс: т.е. при нажатии на него он меняет свое отображение и производит запись соответствующего значения в прикрепленный канал логического типа. Пока приходится лепить из двух объектов: кнопка (которая записывает значение 0 или 1 в канал логического типа) и объекта изображение (который отображает состояние канала логического типа)


Можно смоделировать "чекбокс" используя кнопку типа тумблер, назначив в качестве "картинок" на состояние нажато/отжато изображение в виде состояний "чекбокса"