Главная » 2009»Июль»1 » Пример приложения с модальными формами заставки и запроса пароля
Пример приложения с модальными формами заставки и запроса пароля
21:55
Помимо формы-заставки нередко в приложениях в начале работы появляется форма с запросом пароля. При неверном пароле приложение закрывается, не позволяя пользователю работать с ним.
Рассмотрим один из способов реализации формы-заставки и формы запроса пароля:
1. Откройте новое приложение (File|New Application). Это будет главная форма. Свойству Name присвоим – Fmain.
2. Добавьте новую форму (File|New form). Это будет форма-заставка. Name – Flog. Ее свойство BorderStyle надо сделать равным bsNone(4.1.3), чтобы в окне этой формы отсутствовала полоса заголовка. Поместите на форме рисунки, надписи и т.п. Свойство Position следует сделать равным poScreenCenter, чтобы форма появлялась в центре экрана.
3. Написать обработчики событий, которые при любом действии пользователя закрывали бы форму. Щелкнуть на форме, чтобы в Инспекторе объектов открылись относящиеся к ней страницы (если форма закрыта панелями и т.п., нажимайте клавишу ESC). Перейти на страницу Events инспектора объектов, выбрать событие onKeyDown и написать обработчик, состоящий из одного оператора – Close. Аналогично – для onMouseDown. Если на форме имеются метки, компоненты Image и др., то выделить из все, задать в событии onMouseDown ссылку на тот же обработчик, что и для формы, а в форме поставить свойство KeyPreview в true, чтобы форма перехватывала все связанные с нажатием клавиш события компонентов.
Теперь форма будет закрываться при нажатии пользователем любой клавиши или кнопки мыши.
4. Чтобы и при отсутствии каких-то действий со стороны пользователя форма закрывалась сама, например , через 5 секунд, добавим на форму компонент Timer со страницы System. Это невизуальный компонент, который может отсчитывать интервалы времени. Интервал задается в свойстве компонента Interval в миллисекундах – 5000. Единственное событие таймера onTimer, наступающее по истечении заданного интервала времени. Написать в обработчике этого события – Close.
Теперь при любом действии или бездействии пользователя форма заставка будет закрываться.
5. Чтобы удалить ненужную форму из памяти надо в событие формы onClose вставить оператор:
Action:=caFree;
Форма-заставка готова к использованию (проверить свойства Visible=true у форм). Сохранить проект, дав файлу модуля главной формы имя Umain, а файлу модуля формы-заставки имя Ulog.
Теперь можно записать в главной форме оператор ShowModal. Для этого необходимо сослаться в модуле Umain на модуль Ulog.
6. Для этого можно выполнить команду File|Use Unit. (или Delphi сделает это сама при попытке компиляции приложения).
7. Написать в модуле Umain обработчик события формы onShow, состоящий из одного оператора:
Flog. ShowModal;
Событие onShow наступает перед тем, как форма становится видимой. Поэтому в момент выполнения указанного оператора она еще не видна. Оператор открывает форму как модальную, передает ей управление и дальнейшее выполнение программы в модуле Umain останавливается до тех пор, пока модальная форма не будет закрыта. После закрытия модальной формы выполнение программы продолжается и главная форма становится видимой.
Сохранить проект, запустить приложение и убедиться, что все работает правильно.
Теперь добавим в приложение форму запроса пароля. Будем использовать всего один пароль, который непосредственно укажем в соответствующем операторе программы. И не будем давать пользователю возможности исправить введенный пароль.
8. Добавить к приложению новую форму. Name – Fpsw и сохранить ее модуль в файле – Upsw. Уменьшить размеры формы. Установить свойство BorderStyle равным bsDialog, свойство Position равным poScreenCenter, в свойстве Caption написать – «Введите пароль и нажмите Enter».
9. Поместить в центре формы Edit1, в котором пользователь будет вводить пароль, очистить свойство Text. В обработчике события onKeyDown написать оператор:
if (key=VK_RETURN) then begin if EPSW.Text='я' then ModalResult:=6 else Close; end;
Этот оператор анализирует нажатую клавишу. Если нажата клавиша Enter, то введенный текст сличается с паролем. В данном операторе для упрощения непосредственно указан правильный пароль – символ 'я'.
Если введен правильны пароль, то свойству ModalResult присваивается некоторое условное число – 6 (можно выбрать и другое за исключением 0 и 2). Если пароль неправильный, то выполняется метод Close. В обоих случаях форма закрывается, так как задание отличного от 0 положительного значения ModalResult равносильно закрытию формы. При правильном пароле – ModalResult=6, а при неправильном – ModalResult=2
Теперь необходимо сослаться в модуле Umain на модуль Upsw.
10. Для этого можно выполнить команду File|Use Unit. (или Delphi сделает это сама при попытке компиляции приложения), а в обработчике события onShow после оператора Flog. ShowModal добавить оператор:
if (Fpsw.ShowModal<>6) then Close else begin ShowMessage('Ваш пароль '+Fpsw.EPSW.Text); Fpsw.Free; //уничтожение формы пароля запроса end;
end;
То же самое можно было бы сделать и проще. В обработчике события onKeyDown окна редактирование на форме FPSW можно было бы написать более простой оператор: