Навигация
Главная
Поиск
Форум
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
Реклама
Сейчас на сайте
Гостей: 6
На сайте нет зарегистрированных пользователей

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

Выбор наилучших альтернатив с использованием методов оптимизации на Delp...
Моделирование работы участка термической обработки шестерен на GPSS + По...
Моделирование автовокзала + Отчет + Блок схема

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


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


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 Комментариев · 11833 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Error mod
Bitmap [для кнопок]
32 урока по Delphi
Assembler. Практикум
ActiveX в Delphi
RAS
Краснов М. - Open...
Популярные загрузки
Динамические за...
PRNDbgrid
mmmJlabel
Разработка клиент...
CS:Source - монит...
PHP 5 на примерах
CABfiles
С# для профессион...
Медиа комбайн
iComm v.6.1 - выв...
Converter AMR<->W...
Strawberry Prolog...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97837
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14192
Borland Delphi ... 10292
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Блок GATHER, MATCH
МИФЫ О НОРМАЛИЗАЦИИ
Третий пункт
4.1. Пишем программу
если участник безо...
Аккуратно работаем...
Пишем возраст поль...
Скачать приложение...
Мультиметоды для к...
уровню защиты
Что входит в Servi...
Линейные соотношения
ЧТО такое XSL
Свойство TableMapp...
Коды, построенные ...
Несжатые данные
UNIX и процесс swa...
Оконечный драйвер
Методы-подставки
Получите удовольст...
поддержка распреде...
Шифрование алгорит...
Base) 326Microsoft...
Мебельные петли
Программирование: ...
Статистика



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


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