Навигация
Главная
Поиск
Форум
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
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 65104
Модуль Forms 64885
Пример работы с... 63354
ТЕХНОЛОГИИ ДОСТ... 61582
Имитационное мо... 57447
Реклама
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

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

Поиск пути в графе заданном списками инцедентности на Turbo Pascal
Информационная система - транспортный парк на Turbo Pascal (База данных)...
Моделирование системы управления качеством производственного процесса на...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Пример приложения с модальными формами заставки и запроса пароля
Помимо формы-заставки нередко
в приложениях в начале работы появляется форма с запросом пароля. При
неверном пароле приложение  закрывается, не позволяя пользователю
работать с ним.


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


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 17:57:39 · 0 Комментариев · 10571 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Библия для програ...
Fig [Исходник на ...
Формирование отче...
Язык программиров...
Binary2XMLDemo (Р...
Как программирова...
Динамические за...
База англоязычных...
Animation (Пример...
Dealer
Разработка Web-пр...
Delphi 6/7 базы д...
EditNew
Delphi на примерах
Запрет гостям ск...
XPcontrol
Архив значков
Использование Lis...
Исправление проц...
TMS

Топ загрузок
Приложение Клие... 100466
Delphi 7 Enterp... 86648
Converter AMR<-... 20077
GPSS World Stud... 12670
Borland C++Buil... 11760
Borland Delphi ... 8558
Turbo Pascal fo... 7037
Visual Studio 2... 4998
Калькулятор [Ис... 4762
FreeSMS v1.3.1 3541
Случайные статьи
Описание основных ...
Предотвратить реги...
Переход в графичес...
Задание шрифта тек...
Слушание
Содержание
Подмножество a[i.....
Активная реклама с...
1.3.1. Объект Conn...
Игровые автоматы. ...
Использование опре...
Реализация методов...
функции AddDetails
Процедура рисовани...
Фильтрация таблиц ...
Подключение файла ...
Домен и хостинг
Задание на моделир...
записями в Active ...
Онлайн казино. Игр...
Собираем мышь
Различные ограниче...
Определение шаблон...
Обобщение алгоритм...
Как Microsoft защи...
Статистика



Друзья сайта
Программы, игры


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