f Проектирование графического интерфейса пользователя______________289

11. В модуле UMain, надо, как и ранее, добавить ссылку на модуль UPSW, а в об-
,      работнике события OnShow после ранее введенного оператора FLog->Show-
|     Modal() добавить оператор:

if (FPSW->ShowModal() != 6)
(
ShowMessage("Ваш пароль неверный");

в         Closed;

I       )
'       else

{

ShowMessage("Ваш пароль '" + FPSW->EPSW->Text + "'");

FPSW->Free() ;

^]

Этот оператор анализирует значение свойства ModalResult формы запроса па-
роля. Значение этого свойства возвращает функция FPSW->ShowModal(). Если
результат не равен 6, то был введен неправильный пароль. Тогда главная форма, а
с ней вместе и приложение, закрываются методом Close. При правильном пароле
можно продолжать работу приложения. Оператор ShowMessage введен просто для
того, чтобы показать, как можно использовать свойство другой формы — в данном
случае текст, введенный пользователем в качестве пароля. В реальном приложе-
_ нии по этому паролю можно было бы определить уровень доступа пользователя к

• конфиденциальной информации. Затем следует уничтожение формы запроса паро-

• ля методом Free. Это необходимо сделать, чтобы освободить память. Сама по себе
|1 эта форма в момент ее закрытия не уничтожается, поскольку по умолчанию за-
крыть форму — значит сделать ее невидимой. Уничтожать форму до этого момента
было нельзя, так как при этом уничтожилась бы содержащаяся в ней информа-
ция — введенный пароль.

На этом разработка нашего приложения закончена. Можете сохранить проект,
запустить приложение и посмотреть, как оно работает.

Описанный выше способ управления формой запроса пароля не является опти-
мальным. Он просто призван был показать, как можно обрабатывать величину Мо-

•  dalResult, возвращаемую методом ShowModal. Но то же самое можно было бы сде-
Р дать и проще. В обработчике события OnClose формы FPSW можно было бы напи-
сать оператор:

if (Editl->Text != "I") Application->Terminate() ;

у     При неверном пароле этот оператор завершает работу всего приложения мето-
дом Application->Terminate(). Тогда в главной форме не надо анализировать резу-
льтат работы пользователя с формой FPSW, так как если приложение не закры-

|  лось при выполнении оператора ShowModal, то значит пароль введен правильный.
Поэтому операторы в главной форме тоже упрощаются:

FPSW->ShowModal() ;•
К     ShowMessage("Ваш пароль '"+FPSW->EPSW->Text+"'");

Ц     FPSW->Free() ;

f    Проведите в вашем приложении соответствующие замены операторов и убеди-
S тесь, что приложение и в этом случае работает правильно.

4.7.5 Управление формами в приложениях с интерфейсом
|р     множества документов (приложениях MDI)

•     Типичным приложением MDI является привычный всем Word. В приложении
Г MDI имеется родительская (первичная) форма и ряд дочерних форм (называемых
"'также формами документов). Окна документов могут создаваться самим пользова-