Справочник по компонентам 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).