Использую класс Dialog, чтобы выводить модальные диалоги (по поводу оправданности модальности диалогов в Axapta все знаю, в большинстве случаев она конечно не нужна, но, нам действительно нужен модальный диалог, очень прошу это не обсуждать).
Происходит следующее
Код:
// создать диалог создания операции на основе формы
fm = new Form("OperationCreateDialog");
dialog = new dialog("", element, "", fm);
dialog.doInit();
// сделать модальным
setFormModal(dialog.dialogForm().formRun().hWnd(), true);
dialog.run();
// выключить модальность
setFormModal(dialog.dialogForm().formRun().hWnd(), false);
Беда в том, что на строчку кода после dialog.run() мы попадем только при нажатии кнопки "Ок" или "Cancel". Если же пользователь нажмет кнопку закрытия окна (крестик в правом верхнем углу) на диалоге, то модальность выключена не будет и Axapta останется недоступной, приходится убивать ее.
Выхода два:
Либо научиться обрабатывать нажатие этой кнопки (а там проблема в том, что если форма в диалоге создается динамически, то динамически нужно этот метод и обрабатывать, либо если форма диалогу подсунута, то все равно динамически создавать и обрабатывать у нее метод close())
Либо не показывать ее, предоставляя пользователю только возможность нажатия на обычные кнопки. (тут проблема в том, что надо использовать WinApi - по другому решение не видится).
Пожалуйста, подскажите что-нибудь.
Спасибо.