DIALOG.Wait


Синтаксис

PROCEDURE Wait( [ Timeout: FLOAT ] );

Описание

Метод позволяет выполнить обработку событий диалога и его элементов управления. Если при обработке событий произошла ошибка, связанная с реализацией диалога или элемента управления, выбрасывается исключение 735.

Если диалог активен (см. DIALOG.Active), метод возвращает управление после обработки события, если оно возникло, или, если аргументом задан таймаут в секундах, по истечении таймаута. Если диалог неактивен, событие обрабатывается только в случае, если оно есть в очереди на момент вызова метода; ожидание не выполняется, аргумент игнорируется. Фактически в неактивном диалоге может возникнуть только событие DIALOG.OnSize.

Начиная с версии 14.160.040 для защиты от зависания ASL-кода по нажатию пользователем клавиши Esc на видимом экземпляре класса DIALOG выбрасывается исключение 301 класса Exc_TermByUser, если это разрешено для текущего режима TERM_BY_USER. Под отладчиком, как обычно, вместо выброса исключения выполняется останов. В результате код обработки событий подчиненного диалога стало нужно окружать TRY-блоком, обрабатывающим исключение 301, чтобы по нажатию Esc закрывался только верхний диалог, а не все диалоги сразу.

В версии 14.160.080 были приняты дополнительные меры.

Т.о. код обработки событий диалога с кнопкой отказа от редактирования и/или подчиненного диалога необязательно окружать TRY-блоком, перехватывающим исключение 301, если поток исполнения не покидает DIALOG.Wait на длительное время.

См. также