процедуры OnStartScript, OnStopScript
Добрый день!
Вопрос о работе процедур 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");
}
С уважением, Кондратенко Анатолий
Новочеркасск
День добрый.
1) OnStartScript, OnStopScript отрабатывают только при запуске и закрытии Монитора?
Да, все верно.
2) Есть ли возможность запуска скрипта при открытии или закрытии окна\мнемосхемы ?
На данный момент - нет. Можно попробовать следующую реализацию - вирт. канал со скриптом по событию. В скрипте будет инициализация нужных переменных и открытие мнемосхемы. Соответственно по кнопке будет запускаться скрипт и открывать нужную мнемосхему.
3) Нельзя ли в список объектов добавить объект чекбокс: т.е. при нажатии на него он меняет свое отображение и производит запись соответствующего значения в прикрепленный канал логического типа. Пока приходится лепить из двух объектов: кнопка (которая записывает значение 0 или 1 в канал логического типа) и объекта изображение (который отображает состояние канала логического типа)
Можно смоделировать "чекбокс" используя кнопку типа тумблер, назначив в качестве "картинок" на состояние нажато/отжато изображение в виде состояний "чекбокса"