Окно ввода пароля перед запуском главной формы
MainForm Delphi
Когда создается новый проект Delphi, Form1 автоматически становится MainForm (глобальный объект Application). Чтобы назначить другую форму для свойства MainForm, используйте вкладку Формы диалогового окна Project | Options во время проектирования.
Когда Главная форма закрывается, приложение заканчивает свою работу.
Диалоговое Окно Ввода Пароля
Давайте сначала создадим Главную форму приложения. Создайте новый проект Delphi, который содержит одну форму. Эта форма в соответствии с проектом - Главная форма.
Если Вы измените имя формы на TMainForm и сохраните модуль как main.pas, исходный текст будет таким (проект был сохранен как PasswordApp):
program PasswordApp; uses Forms, main in 'main.pas' {MainForm}; {$R *.res} begin Application.Initialize; Application.CreateForm(TMainForm, MainForm) ; Application.Run; end.
Теперь добавим вторую форму в проект.
В соответствии с проектом, когда вторая форма будет добавлена, она будет присутствовать в списке Auto-Create Forms в диалоговом окне Project Options.
Назовите вторую форму как TLoginForm и удалите ее из списка автоматически создаваемых форм. Сохраните этот модуль под именем login.pas.
Добавьте компоненты Label, Edit и Button на форму.
Добавьте метод класса для создания, отображения и закрытия диалогового окна ввода пароля. Метод Execute возвращает True, если Пользователь ввел правильный пароль в окне ввода пароля.
Вот полный исходный код:
unit login; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TLoginForm = class(TForm) LogInButton: TButton; pwdLabel: TLabel; passwordEdit: TEdit; procedure LogInButtonClick(Sender: TObject) ; procedure FormCreate(Sender: TObject) ; public class function Execute : boolean; end; implementation {$R *.dfm} class function TLoginForm.Execute: boolean; begin with TLoginForm.Create(nil) do try Result := ShowModal = mrOk; finally Free; end; end; procedure TLoginForm.LogInButtonClick(Sender: TObject) ; begin if passwordEdit.Text = 'delphi' then ModalResult := mrOK else ModalResult := mrAbort; end; end.
Метод Execute динамически создает экземпляр TLoginForm и модально отображает его, используя метод ShowModal.
ShowModal не возвращается, пока форма не будет закрыта. Когда форма закрывается, она возвращает свойство ModalResult.
Обработчик события OnClick для LogInButton назначает mrOk свойству ModalResult, если Пользователь ввел правильный пароль (delphi в вышеупомянутом примере). Если Пользователь ввел неправильный пароль, ModalResult устанавливается в mrAbort (или что-нибудь вроде mrNone).
Установив значение ModalResult, форма закрывается. Execute возвращает True, если ModalResult равен mrOk, т.е. Пользователь ввел правильный пароль.
Не Создаем MainForm Перед Входом в Систему
Теперь, Вы должны удостовериться, что главная форма не была создана, если Пользователь ввел неправильный пароль.
Исходный код проекта выглядит так:
program PasswordApp; uses Forms, main in 'main.pas' {MainForm}, login in 'login.pas' {LoginForm}; {$R *.res} begin if TLoginForm.Execute then begin Application.Initialize; Application.CreateForm(TMainForm, MainForm) ; Application.Run; end else begin Application.MessageBox('Вы не авторизованы в этом приложении. Правильный пароль "delphi".', 'Приложение защищинное паролем') ; end; end.
Обратите внимание на использование - чтобы определить, была ли главная форма создана. Если Execute возвращает False, MainForm не создается, а приложение закрывается, даже не запустившись.
Вот и все!!!
Комментарии