У меня вроде получилось это запустить.
Но! Метод, который вызывается при закрытии диалога (callback) запускается только если открываешь диалог через вызов функционального блока, а не через обычную кнопку на дисплее.
Вид для печати
У меня вроде получилось это запустить.
Но! Метод, который вызывается при закрытии диалога (callback) запускается только если открываешь диалог через вызов функционального блока, а не через обычную кнопку на дисплее.
Евгений, это НЕ ожидаемое поведение!
Для вас оно ожидаемо!
А для людей, у которых постоянно разряжается Айкос, которые записывают кружки в Телеге, делают фото с фильтрами - это ПИПЕЦ!
И это всего лишь пост.действие при закрытии кастомного диалога!
П.С.: Кстати, нужно еще сбросить флаг - fbOpenFeedbackDialog.xExecute. Кнопка его только взводит.
ПП.С.: Ах, да... Мы сделаем это в самом методе закрытия диалога - DialogClosedWithTag!
Огонь!
А вот еще вопрос "на засыпку":
Вызывая кастомный диалог через ФБ fbOpenFeedbackDialog, я хотел бы чтобы поля диалога заполнились некими динамическими данными. Например, в диалоге я правлю строку из таблицы и хочу, что-бы данные из этой строки уже были вставлены в поля диалога.
Т.е. мы говорим о пред.действии. При том, что данные в полях всегда разные: мы можем править любую строку в таблице.
Как это реализовать?
Наверное, через ф.блок VisuCallbackOpenDialog и его методы ActionDone и DialogOpened ? Мы ведь не просто так его создавали в проекте ?
Увы, нет. Через ФБ VisuCallbackOpenDialog и его методы ActionDone и DialogOpened не получается.
Я вставил в эти два метода "свой спец.метод", который делает это пред.действие.
Но походу эти два метода отрабатываются сразу же после (!) открытия диалога, а не до (!) его открытия.
Как это проверить?
1. Заполнить любые две строки в таблице (достаточно заполнить только первую колонку). Сохраняться, нажимая "ОК".
2. Попробовать повторно редактировать эти строки. Не сохраняться, нажимая "Отмена".
3. Будет видно, что данные предварительно вставляются в поля неправильно.
Кнопка "R" вверху справа перезапускает ПЛК в исходное состояние (не сразу, а через 10 секунд).
https://codesys.chu.by
Исследую этот способ.