Руководство разработчика

Особенности использования событий показа формы

Все четыре вида форм имеют обработчики событий - до_открытия, открытие, после_открытия и закрытие. Все эти обработчики имеют ряд особенностей в использовании.

Обработчик до_открытия вызывается до того, как окно формы создается, поэтому в этом обработчике можно формировать данные, которые будут отображены на форме. Важно отметить, что заполнять форму данными стоит именно в обработчике до_открытия, а не в обработчике открытия, когда форма уже создана, но еще не отображается на экране, так как в этом случае будет запущен более сложный механизм по вставке данных в уже созданную форму. Команда для заполнения формы, вызванная в обработчике до_открытия, выполняется внутренним языком, в отличие от команды заполнения формы в обработчике открытия, которая предается внутренним языком окну, а само окно уже изменяет форму. Каждая новая команда по заполнению формы в обработчике открытия влечет за собой изменение формы, следовательно эти изменения влекут за собой множественную перерисовку формы, поэтому все данные для показа на форме стоит формировать, когда окно еще не создано.

Обработчик до_открытия возвращает логическое значение. Если возвращаемое значение равно НЕТ, то форма не будет показана и метод ПОКАЗАТЬ вернет пустую строку.

Обработчик открытие следует использовать, когда действия происходят уже непосредственно с окном формы. Например, такими действиями являются установка курсора в необходимую позицию, установка фокуса, установка панели инструментов, добавление элементов управления на форму.

Обработчик закрытие вызывается перед закрытием формы, в качестве параметра принимает код выхода, который возвращается методами ПОКАЗАТЬ, ПОКАЗАТЬ_МДИ, ПОКАЗАТЬ_ВЕРХНЕГО_УРОВНЯ, ПОКАЗАТЬ_МОДАЛЬНЫЙ. При закрытии окна стандартными средствами Windows в качетсве кода выхода выступает пустая строка. Коды выхода можно использовать для задания вариативных действий после закрытия формы.

до_открытияоткрытиепосле_открытиязакрытие
ДИАЛОГ----
БЛАНК----
ТАБ_ФОРМАдо_открытияоткрытиепосле_открытиязакрытие
ОТЧЕТдо_открытияоткрытиепосле_открытиязакрытие

См. также: