Отображение окна ввода пароля перед запуском главной формы |
![]() |
![]() |
Статьи |
MainForm приложения Delphi - форма, которая создается первой в главном теле приложения. Если Вам нужно организовать допуск к Вашему приложению, Вы могли бы отобразить форму ввода пароля для входа в приложение. Короче говоря, идея состоит в том, чтобы создать, отобразить и уничтожить диалоговое окно "Вход в Систему" перед созданием Главной формы. MainForm DelphiКогда создается новый проект Delphi, Form1 автоматически становится MainForm (глобальный объект Application). Чтобы назначить другую форму для свойства MainForm, используйте вкладку Формы диалогового окна Project | Options во время проектирования. Когда Главная форма закрывается, приложение заканчивает свою работу. Диалоговое Окно Ввода ПароляДавайте сначала создадим Главную форму приложения. Создайте новый проект Delphi, который содержит одну форму. Эта форма в соответствии с проектом - Главная форма. Если Вы измените имя формы на TMainForm и сохраните модуль как main.pas, исходный текст будет таким (проект был сохранен как PasswordApp):
Теперь добавим вторую форму в проект. В соответствии с проектом, когда вторая форма будет добавлена, она будет присутствовать в списке Auto-Create Forms в диалоговом окне Project Options. Назовите вторую форму как TLoginForm и удалите ее из списка автоматически создаваемых форм. Сохраните этот модуль под именем login.pas.
Добавьте компоненты Label, Edit и Button на форму. Добавьте метод класса для создания, отображения и закрытия диалогового окна ввода пароля. Метод Execute возвращает True, если Пользователь ввел правильный пароль в окне ввода пароля. Вот полный исходный код:
Метод Execute динамически создает экземпляр TLoginForm и модально отображает его, используя метод ShowModal. ShowModal не возвращается, пока форма не будет закрыта. Когда форма закрывается, она возвращает свойство ModalResult. Обработчик события OnClick для LogInButton назначает mrOk свойству ModalResult, если Пользователь ввел правильный пароль (delphi в вышеупомянутом примере). Если Пользователь ввел неправильный пароль, ModalResult устанавливается в mrAbort (или что-нибудь вроде mrNone). Установив значение ModalResult, форма закрывается. Execute возвращает True, если ModalResult равен mrOk, т.е. Пользователь ввел правильный пароль. Не Создаем MainForm Перед Входом в СистемуТеперь, Вы должны удостовериться, что главная форма не была создана, если Пользователь ввел неправильный пароль. Исходный код проекта выглядит так:
Обратите внимание на использование, чтобы определить, была ли главная форма создана. Если Execute возвращает False, MainForm не создается, а приложение закрывается, даже не запустившись. Вот и все!!! |
Комментарии
Код функции TLoginForm.Exec ute должен располагаться сразу после {$R *.dfm}, иначе программа будет ругаться.
Вопрос в том, как передать данные пользователя в форму которая еще не создана?
Проблему решил.
В файле проекта написал:
Application.Ini tialize;
Application.Cre ateForm(TF_main , F_main);
if TF_login.Execut e then
begin
//создание остальных форм
Application.Run ;
end
else
begin
F_main.Database .Close;
Application.Ter minate;
end;
Форма авторизации использует подключение к БД с главной формы. Т.о. данные об авторизованном пользователе остаются на главной форме.
Не кого такого не было, что при выходе из программы окно программы пару раз моргает и потом программа полностью завершает свою работу?
Как завершаешь работу программы?
It's simple, yet effective. A lot of times it's
hard to get that "perfect balance" between user friendliness and visual appeal.
I must say you've done a fantastic job with this.
Also, the blog loads extremely quick for me on Opera.
Exceptional Blog!
RSS лента комментариев этой записи