Из вашего вопроса вытекает несколько вещей.
SUPER::EVENT OPEN()
попытается вызвать событие Open для DataWindow, если оно вызывается из ItemChanged, а не из Window.
Я не уверен в этом на 100%, но я почти уверен, что сталкивался с проблемами, пытаясь вызвать предка одного скрипта из совершенно другого скрипта. Я не могу указать на документацию; Придется списать это на пережитые подозрения.
Не совсем понятно, что вам нужно, но если вы хотите вызвать Open окна (и я предложу иное ниже), и если сценарий Open окна либо расширяет сценарий предка, либо явно вызывает сценарий предка (как выше), явный вызов сценария предка не нужен и кажется мне потенциально нежелательным. Просто вызовите сценарий Open окна, которое вы пишете.
Это будет полностью зависеть от вашего кода, но из десятков систем, которые мне приходилось поддерживать, я никогда не предполагал, что запуск события Open окна приведет к «перезапуску» окна. Большинство систем, над которыми я работал, просто создавали неожиданное сочетание предыдущих и новых состояний. Кроме того, даже если бы я закодировал это с нуля, чтобы оно работало таким образом, я бы предположил, что следующий парень, который придет поддерживать мой код (после того, как я выиграл в лотерею и удалился на небольшой остров в южной части Тихого океана), будет кодировать в способ, который имел для него смысл, основанный на других системах, над которыми он работал, но испортил бы мои предположения. Если бы мне нужно было «перезапустить» окно, я бы либо:
- закройте окно и снова опубликуйте Open() (функция, а не событие) окна
- создайте событие ue_ResetWindow, надеюсь, закодировав его так, чтобы Open мог его использовать, что сделало очевидным, что все, что добавляется к окну, также должно поддерживаться в этом скрипте.
(Из двух последних, ИМХО, было бы намного лучше взаимодействие с пользователем и кодирование.)
Удачи,
Терри.
person
Terry
schedule
08.07.2013