286______________________________________________Глава 4

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

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

Ниже приведен пример использования модальных форм.

4.7.4 Пример приложения с модальными формами заставки
и запроса пароля

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

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

Формы-заставки и формы запроса пароля могут быть реализованы множест-
вом различных способов. Рассмотрим один из них.

1. Откройте в C++Builder новое приложение (File | New Application). Пусть открыв-
шаяся форма будет главной в нашем приложении (вместо такой пустой формы
вы можете взять любое разработанное вами ранее приложение и добавлять
форму-заставку и форму запроса пароля в него). Назовите для определенности
главную форму приложения FMain.

2. Добавьте в приложение новую форму (File | New Form). Пусть это будет ваша
форма-заставка. Назовите ее FLog. Ее свойство BorderStyle надо сделать рав-
ным bsNone, чтобы в окне этой формы отсутствовала полоса заголовка. Вы мо-
жете поместить на форме какой-то рисунок (разместить компонент Image и
вставить в его свойстве Picture желаемый рисунок), надписи и т.п. В простей-
шем случае поместите в центре формы метку Label и напишите в ней какой-то
текст. Размер формы-заставки задайте небольшим, меньшим, чем обычные
окна приложения. Свойство Position следует сделать равным poScreenCenter,
чтобы форма появлялась в центре экрана.

3. Теперь напишите обработчики событий, которые при любом действии пользо-
вателя закрывали бы форму. Щелкните на форме, чтобы в Инспекторе Объек-
тов открылись относящиеся к ней страницы (если у вас форма накрыта пане-
лями или рисунками, то, щелкнув на них, нажимайте клавишу Esc до тех пор,
пока в Инспекторе Объектов не откроются страницы, относящиеся к форме).
Перейдите в Инспекторе Объектов на страницу событий, выберите событие оп-