Как сделать форму входа в Delphi

MainForm для Delphi-приложения - это форма (окно), которая является первой, созданной в основной части приложения. Если вам нужно реализовать какую-либо авторизацию для вашего приложения Delphi, вы можете захотеть отобразить диалоговое окно логина / пароля, прежде чем основная форма будет создана и отображена для пользователя. Короче говоря, идея состоит в том, чтобы создать, отобразить и уничтожить диалоговое окно «Логин» перед созданием основной формы.

Delphi MainForm

Когда создается новый проект Delphi, «Form1» автоматически становится значением свойства MainForm (глобального заявка объект). Чтобы назначить другую форму свойству MainForm, используйте страницу «Формы» Проект> Параметры диалоговое окно во время разработки. Когда основная форма закрывается, приложение закрывается.

Диалог логина / пароля

Начнем с создания основной формы приложения. Создайте новый проект Delphi, содержащий одну форму. Эта форма, по замыслу, является основной формой.

Если вы измените имя формы на «TMainForm» и сохраните модуль как «main.pas»,

instagram viewer
исходный код проекта выглядит так (проект был сохранен как «PasswordApp»):

программа PasswordApp;
использования
Формы,
 основной в 'main.pas' {MainForm};
{$ R * .res}
 начать
 Заявка. Инициализировать;
 Заявка. CreateForm (TMainForm, MainForm);
 Заявка. Бегать;
 конец.

Теперь добавьте вторую форму к проекту. По умолчанию вторая добавленная форма отображается в списке «Автоматическое создание форм» в диалоговом окне «Параметры проекта».

Назовите вторую форму «TLoginForm» и удалите ее из списка «Автоматическое создание форм». Сохраните устройство как «login.pas».

Добавьте метку, изменить и кнопку на форме, а затем метод класса создать, показать и закрыть диалог логина / пароля. Метод «Выполнить» возвращает истину, если пользователь ввел правильный текст в поле пароля.

Вот полный исходный код:

единица измерения авторизоваться;
интерфейс
 использования
 Windows, сообщения, SysUtils, варианты, классы,
 Графика, элементы управления, формы, диалоги, StdCtrls;
 тип
 TLoginForm = учебный класс(ТГогт)

LogInButton: TButton;
pwdLabel: TLabel;
PasswordEdit: TEdit;
процедура LogInButtonClick (Отправитель: TObject);

функция публичного класса Execute: логическое значение;конец;
реализация{$ R * .dfm}
функция класса TLoginForm. Execute: логическое значение;начинать с TLoginForm. Создайте(ноль) dotry
 Результат: = ShowModal = mrOk;
 наконец
 Свободно;
 конец; конец;
процедура TLoginForm. LogInButtonClick (Отправитель: TObject); начало, если пароль отредактирован. Text = 'Delphi' тогда
 ModalResult: = mrOK
 еще
 ModalResult: = mrAbort;
 конец;
конец. 

Метод Execute динамически создает экземпляр TLoginForm и отображает его с помощью ShowModal метод. ShowModal не возвращается, пока форма не закроется. Когда форма закрывается, она возвращает значение ModalResult свойство.

Обработчик события «LogInButton» OnClick назначает «mrOk» свойству ModalResult, если пользователь ввел правильный пароль (в приведенном выше примере это «delphi»). Если пользователь указал неверный пароль, для ModalResult установлено значение «mrAbort» (это может быть что угодно, кроме «mrNone»).

Установка значения для свойства ModalResult закрывает форму. Execute возвращает true, если ModalResult равен «mrOk» (если пользователь ввел правильный пароль).

Не создавать MainForm перед входом

Теперь вам нужно только убедиться, что основная форма не создана, если пользователь не смог ввести правильный пароль.

Вот как должен выглядеть исходный код проекта:

 программа PasswordApp;
использования
Формы,
main в 'main.pas' {MainForm},
войдите в 'login.pas' {LoginForm};
 {$ R * .res}
 beginif TLoginForm. казнить thenbegin
 Заявка. Инициализировать;
 Заявка. CreateForm (TMainForm, MainForm);
 Заявка. Бегать;
 endelsebegin
 Заявка. MessageBox («Вы не авторизованы для использования приложения. Пароль «delphi». ', «Приложение Delphi, защищенное паролем»);
 конец; конец.

Обратите внимание на использование если тогда еще блок, чтобы определить, должна ли быть создана основная форма. Если «Execute» возвращает false, MainForm не создается и приложение завершается без запуска.

instagram story viewer