Отображение диалогового окна пароля при запуске приложения
MainForm
Когда создается новый проект Delphi, автоматически создается Form1 и придает ей свойства главной формы - MainForm (глобального объекта Application). Чтобы назначить другой форме свойство MainForm, откройте вкладку Forms диалогового окна Project -> Options
и в списке MainForm выберите нужную форму.
Когда главная форма закрывается, приложение завершает свою работу.
Диалоговое окно Авторизация
Начнем с создания главной формы приложения. Создайте новый проект, который содержит одну форму. Это будет главная форма проекта.
Измените имя формы на mainForm и сохраните этот модуль под именем main.pas
, а сам проект под именем Password.dpr
.
Теперь добавьте вторую форму в проект и дайте ей имя loginForm. По умолчанию, вторая форма тоже будет создаваться автоматически. Удалите ее из авто-создания формы, перейдя в меню Project -> Options
на вкладке Forms. Сохраните этот модуль под именем login.pas
.
Код проекта
program Password; uses Forms, login in 'login.pas' {loginForm}, main in 'main.pas' {mainForm}; {$R *.res} begin Application.Initialize; Application.CreateForm(TmainForm, mainForm); Application.Run; end.
Добавьте на форму TButton (btnLogin), TEdit (edPassword) и TLabel (lblPassword).
Добавьте метод класса создания и уничтожения формы диалогового окна авторизации.
Функция Execute возвращает True, если пользователь ввел правильный пароль в поле ввода пароля.
Вот исходный код формы авторизации:
unit login; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TloginForm = class(TForm) edPassword: TEdit; btnLogin: TButton; lblPassword: TLabel; procedure btnLoginClick(Sender: TObject); private { Private declarations } public { Public declarations } class function Execute: boolean; end; var loginForm: TloginForm; implementation {$R *.dfm} { TloginForm } class function TloginForm.Execute: boolean; begin with TloginForm.Create(nil) do try result:= ShowModal = mrOk; finally Free; end; end; procedure TloginForm.btnLoginClick(Sender: TObject); begin if edPassword.Text = 'password' then ModalResult:= mrOk else ModalResult:= mrAbort; end; end.
Метод Execute динамически создает экземпляр TloginForm и отображает его модально при помощи метода ShowModal.
Программа из ShowModal не возвращается, пока форма не будет закрыта. Когда форма закрывается, она возвращает значение свойства ModalResult.
Обработчик события OnClick кнопки btnPassword присваивает свойству ModalRelult mrOk, если пользователь ввел правильный пароль или mrAbort, если пользователь ввел неверный пароль. Таким образом, главная форма не будет создаваться, если пользователь ввел неверный пароль.
Вот исходный код проекта с условиями перехода:
program Password; uses Forms, login in 'login.pas' {loginForm}, main in 'main.pas' {mainForm}; {$R *.res} begin if TloginForm.Execute then begin Application.Initialize; Application.CreateForm(TmainForm, mainForm); Application.Run; end else begin Application.MessageBox('У Вас нет прав на использование этой ' + 'программы. Пароль "password"', 'Защита паролем'); end; end.
Вот и все!
Комментарии