Тема: Выход из диалога

Как при выходе из диалога по клавише ESC (is_cancel = true) обойти обработку action_tile переменной, значение которой в настящий момент вводится (конкретно-у меня при action_tile происходит проверка введенного значения переменной, и при необходимости вызывается функция ALERT, так вот, при нажатии клавиши ESC происходит проверка и, если необходимо, вызывается ALERT, а зачем мне это, если я прерываю диалог?).

Re: Выход из диалога

По моему, никак. action_tile начинает работать когда данный edit_box теряет фокус или в нем не нажали <Enter>. При нажатии ESC фокус теряется и сначала отрабатывает action_tile на edit_box, а уже потом на кнопке (is_cancel = true).
Если надо, чтобы при изменении данного значения сразу что-то происходило на экране (строилось, изменялось и т.п.), т.е. если в данном action_tile есть (done_dialog), то все проверки начинать только, если сделан окончательный выбор (/= $reason 2).
Иначе все проверки всех значений делать по одной кнопке OK. И уже там выдавать alert.
Еще вариант вместо alert просто делать не доступной основную кнопку OK.

Re: Выход из диалога

Сделать кнопку ОК недоступной не проблема, но в диалоге я ввожу довольно много данных, причем ввод некоторых обязателен, а некоторых нет, а недоступная кнопка без ALERT не дает понять, какие значения не введены.

Re: Выход из диалога

Проверять все значения перед первым отображением диалога. Т.е. если диалог уже на экране, то во всех обязательных полях уже корректные значения (не обязательные могут быть и пустыми). В данный момент OK доступна. В каждом action_tile делать проверку:
Если значение корректно, то
(mode_tile "ok" 0)
иначе
(mode_tile "ok" 0)
(mode_tile "mybox" 2)
Т.е. если нажмут OK сразу после загрузки диалога, то есть уверенность, что все значения правильные. Если где-то введут что-то не то, то OK станет недоступной, а фокус сместится на проблемный edit_box, при этом текст в нем станет выделенным. Будет довольно наглядно. Можно дополнительно выводить в errtile какое-либо сообщение.

Re: Выход из диалога

Иначе (mode_tile "ok" 1), а так все понятно. Спасибо.