Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 3
На сайте нет зарегистрированных пользователей

Пользователей: 13,372
новичок: vausoz
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

База данных - рабочее место кассира на Delphi + бд Access
Моделирование работы узла коммутации сообщений на GPSS + Пояснительная з...
Создание последовательности окон и передвижение окон по экрану на Turbo ...

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


Рассмотрим один из способов
реализации формы-заставки и формы запроса пароля:


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 можно было бы написать
более простой оператор:


if (key=VK_RETURN)and(EPSW.Text<>’a’)
then


Application/Terminate;


И операторы в главной форме тоже упрощаются:


Fpsw.ShowModal;
ShowMessage('Ваш пароль
'+Fpsw.EPSW.Text);
Fpsw.Free;


unit Umain;


interface


uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs;


type
TFMain = class(TForm)
procedure
FormShow(Sender: TObject);
private
{ Private declarations
}
public
{ Public declarations }
end;


var
FMain: TFMain;


implementation


uses Ulog, Upsw;


{$R *.DFM}


procedure TFMain.FormShow(Sender: TObject);


begin


Flog.ShowModal;


if (Fpsw.ShowModal<>6)


then Close
else
begin
ShowMessage('Ваш пароль
'+Fpsw.EPSW.Text);
Fpsw.Free;
end;


end;


end.


unit Ulog;


interface


uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
StdCtrls;


type
TFLog = class(TForm)
Label1:
TLabel;
procedure FormMouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure
FormClose(Sender: TObject; var Action: TCloseAction);
private
{
Private declarations }
public
{ Public declarations
}
end;


var
FLog: TFLog;


implementation


{$R *.DFM}


procedure TFLog.FormMouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);


begin


Close;


end;


procedure TFLog.FormClose(Sender: TObject; var Action:
TCloseAction);


begin


Action:=caFree;


end;


end.


unit Upsw;


interface


uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs,
StdCtrls;


type
TFPSW = class(TForm)
Epsw: TEdit;
procedure
EpswKeyDown(Sender: TObject; var Key: Word;
Shift:
TShiftState);
private
{ Private declarations }
public
{ Public
declarations }
end;


var
FPSW: TFPSW;


implementation


{$R *.DFM}


procedure TFPSW.EpswKeyDown(Sender: TObject; var Key:
Word;
Shift: TShiftState);


begin


if (key=VK_RETURN) then
begin
if
EPSW.Text='я'
then ModalResult:=6
else Close;
end;


end;


end.

Опубликовал Kest October 25 2008 13:57:39 · 0 Комментариев · 11851 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Сапёр
Animation (Пример...
Библия хакера 2. ...
Язык программиров...
DateEdit
Игра PackMan
iChat v.7.0 Final...
Battle.Net - мони...
Delphi на примерах
MiniTetris [Исход...
C++ Builder: Книг...
HTMLredaktor
Delphi 6 программ...
Игра "Астероиды" ...
Файловый менеджер
Разработка клиент...
Binary2XMLDemo (Р...
BDEPack
Упорядоченный дин...
Socoban

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97843
Converter AMR<-... 20268
GPSS World Stud... 17020
Borland C++Buil... 14195
Borland Delphi ... 10304
Turbo Pascal fo... 7376
Калькулятор [Ис... 5987
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Реагирование на со...
Выизучили все пара...
Массивы нужно все-...
Секреты *. dat файла
PokerMatch - попул...
Требования к отчет...
Прожигатетели врем...
ТАБЛИЦЫ
3. Можно ли примен...
Google
План книги
Числовые системы в...
Вы не хотите опред...
Суд Федеральный
Invalid qualifier
SRV, зарегистриров...
Использование расп...
Вопросы гидродина...
Сортировка
Согласие, основанн...
Процедура SetBkCol...
Вывод в текущее по...
д - Алфавитный ука...
Классы в PHP3
Импланты верхних з...
Статистика



Друзья сайта
Программы, игры
Error: Incorrect password!
Error: Incorrect password!


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?