Участник
Регистрация: 28.11.2005
Адрес: Москва
|
saveUserSettings/loadUserSettings на форме
Понадобилось мне сохранять/восстанавливать кое-какие настройки, которые пользователь меняет на форме. В tutorial_SysLastValue настройки сохраняются в методе close(), а загружаются и применяются в методе run(). Непонятно, конечно, почему бы не восстанавливать настройки в методе init(), но это мелочи. Между тем у FormRun есть два метода - loadUserSettings() и saveUserSettings(), которые логично было бы использовать для загрузки и сохранения различных параметров с использованием SysLastValue.
При создании экземпляра формы, если посмотреть в отладчике, видно, что this на самом деле указывает на экземпляр SysSetupFormRun, производный от FromRun. Таким образом, класс SysSetupFormRun делает какую-то свою работу и, вызывая в нужных местах super(), выполняет, помимо прочего, соотв. методы нашей формы. SysSetupFormRun.init() вызывает init() формы, SysSetupFormRun.loadUserSetting() loadUserSetting() формы и т.д.
Метод формы loadUserSettings() вызывается из метода init() примерно в такой последовательности:
PHP код:
SysSetupFormRun.init()
super() == Form.init()
super()
SysSetupFormRun.loadUserSettings()
super() == Form.loadUserSettings()
метод формы saveUserSettings() по идее должен вызываться из метода close(), точнее даже из SysSetupFormRun.saveUserSettings() в вызове super() - но почему-то не вызывается
PHP код:
SysSetupFormRun.task()
super() == FormRun.task()
FormRun.closeOk()
Form.close()
FormRun.close()
SysSetupFormRun.saveUserSettings()
super() // тут Form.saveUserSettings() не вызывается
С одной стороны, конечно, можно плюнуть на это и сделать так, как в tutorial_SysLastValue, но с другой - интересно, откуда растут ноги такой половинчатой работы SysSetupFormRun Кто-нить с этим сталкивался?.. Для проверки достаточно создать пустую форму, перегрузить у нее saveUserSettings() и поставить на него точку останова - у меня не срабатывает ни разу
Axapta 3.0 KR2
|