Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Delphi_1курс лекции / Тема 18 Модальные формы.doc
Скачиваний:
47
Добавлен:
23.03.2015
Размер:
83.46 Кб
Скачать

Модальные формы 6 Модальные формы

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

Модальной может быть сделана любая форма, если она делается видимой методом ShowModal. Если та же самая форма делается видимой методом Show, то она не будет модальной.

Поведение модальной формы определяется ее основным свойством ModalResult. Это свойство доступно только во время выполнения приложения. При открытии формы методом ShowModal сначала свойство ModalResult равно нулю. Как только при обработке каких-то событий на форме свойству ModalResult будет присвоено положительное значение, модальная форма закроется.

Закрыть модальную форму можно вызовом метода close или заданием ненулевого значения ModalResult. В предложенном ниже примере модальная форма ModForm закрывается при нажатии клавиши мыши

procedure TModForm.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

close;

// или modalresult:=2;

end;

Значение свойства ModalResult можно будет прочитать как результат, возвращаемый методом ShowModal. Таким образом, программа, вызвавшая модальную форму, может узнать, как пользователь закрыл эту форму.

procedure TForm1.FormShow(Sender: TObject);

begin

if IntToStr(ModForm.ShowModal)=2 then …

end;

В Delphi предопределены некоторые константы, облегчающие трактовку результатов, полученных при закрытии модальной формы

Численное

значение ModalResult

Константа

Пояснение

0

mrNone

используется как значение по умолчанию до выхода

1

mrOk или

idOK

закрытие модальной формы нажатием кнопки OK

2

mrCancel или

idCancel

закрытие модальной формы нажатием кнопки Cancel, или методом Close, или нажатием кнопки системного меню в полосе заголовка окна

3

mrAbort или

idAbort

закрытие модальной формы нажатием кнопки Abort

4

mrRetry или

idRetry

закрытие модальной формы нажатием кнопки Retry

5

mrIgnore или

idIgnore

закрытие модальной формы нажатием кнопки Ignore

6

mrYes или

idYes

закрытие модальной формы нажатием кнопки Yes

7

mrNo или

idNo

закрытие модальной формы нажатием кнопки No

8

mrAll

закрытие модальной формы нажатием кнопки All

9

mrNoToAll

закрытие кнопки модальной формы нажатием NoToAll

10

mrYesToAll

закрытие модальной формы нажатием кнопки YesToAll

Все приведенные выше пояснения значений ModalResult (кроме значений 0 и 2) носят чисто условный характер. В своем приложении вы вольны трактовать ту или иную величину ModalResult и соответствующие константы как вам угодно.

Требуемые значения ModalResult можно задавать в обработчиках соответствующих событий в компонентах модальной формы. Однако при использовании кнопок можно обойтись и без подобных обработчиков. Дело в том, что кнопки типа TButton и TBitBtn имеют свойство ModalResult, по умолчанию равное mrNone. Для кнопок, расположенных на модальной форме, значение этого свойства можно изменить и тогда не потребуется вводить каких-либо обработчиков событий при щелчке на них. В кнопках BitBtn при свойстве Kind, не равном bkCustom, заложены по умолчанию значения ModalResult, соответствующие назначению той или иной кнопки.