Справочник по компонентам Delphi. Часть 3 - Модальные формы
ОГЛАВЛЕНИЕ
Модальные формы
Компонент TForm в VCL объединяет в себе свойства и может играть роль как главного окна программы, так и диалогового (модального) окна. Чтобы форма работала в качестве диалога, вместо метода Show нужно вызвать метод:
function ShowModal: Integer;
Этот метод реализует весь жизненный цикл модальной формы. Он показывает ее на экране, активизирует ее и запрещает переключение на другие формы приложения. Начинается обработка сообщений, которая происходит до тех пор, пока свойство
(Rb) property ModalResult: TModalResult;
не изменит своего значения, первоначально нулевого. Напомним, что это свойство формы меняется непосредственно с помощью некоторых видов принадлежащих ей кнопок (см. раздел "Кнопки"). Если для модальной формы программистом вызывается метод Close, то ее единственным действием является то, что свойству ModalResult присваивается значение mrCancel (без вызовов OnCloseQuery и OnClose).
Как только получено ненулевое значение ModalResult, вызьшается метод:
procedure CloseModal;
Его роль такая же, как у Close для обычной формы: сначала вызов CloseQuery, затем — генерация события OnClose. Установив в параметре Action этого события значение caNone, можно обнулить ModalResult и тем самым воспрепятствовать закрытию. В противном случае форма деактивизируется и делается невидимой.
Этот набор методов неприменим к дочерним формам MDI (со стилем fsMDIChild).