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

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

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

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

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

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

Назовите для определенности главную форму приложения FMain.

2. Добавьте в приложение новую форму (File | New | Form). Пусть это будет ваша форма-заставка. Назовите ее FLog.

Ее свойство BorderStyle надо сделать равным bsNone, чтобы в окне этой формы отсутствовала полоса заголовка.

Вы можете поместить на форме какой-то рисунок (разместить компонент Image и вставить в его свойство Picture желаемый рисунок), надписи и т.п. В простейшем случае поместите в центре формы метку Label и напишите в ней какой-то текст.

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

Свойство Position следует сделать равным poScreenCenter, чтобы форма появлялась в центре экрана.

3. Теперь напишите обработчики событий, которые при любом действии пользователя закрывали бы форму.

procedure TFLog.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

close;

end;

Аналогичный обработчик напишите для события onMouseDown.

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

Shift: TShiftState; X, Y: Integer);

begin

Close;

end;

Если на форме у вас имеются метки, компоненты Image и др., то выделите их все, задайте в событии onMouseDown ссылку на тот же обработчик, что вы сделали для формы.

В форме поставьте свойство KeyPreview в true, чтобы форма перехватывала все связанные с нажатием клавиш события компонентов.

Теперь форма будет закрываться при нажатии пользователем любой клавиши или кнопки мыши.

Давайте сделаем так, чтобы и при отсутствии каких-то действий со стороны пользователя форма закрывалась сама, например, через 5 секунд.

4. Добавьте на форму компонент Timer со страницы System.

Интервал задается в свойстве компонента Interval в миллисекундах. Задайте его равным 5000.

Единственное событие таймера — onTimer, наступает по истечении заданного интервала времени. Напишите в обработчике этого события все тот же единственный оператор Close.

procedure TFLog.Timer1Timer(Sender: TObject);

begin

close;

end;

Теперь при любом действии и даже бездействии пользователя форма-заставка будет закрываться. Но что это означает? По умолчанию закрыть форму значит сделать ее невидимой. Однако форма-заставка не нужна после того, как она будет предъявлена пользователю в первый момент выполнения приложения. Хранить все время в памяти эту уже ненужную форму не имеет смысла. Поэтому в форме надо предусмотреть, чтобы закрытие формы означало ее удаление из памяти и освобождение памяти для чего-нибудь более полезного. Для этого надо сделать следующее.