Как да направите формуляра за влизане в Delphi

Приложението MainFormof a Delphi е форма (прозорец), която е първата, създадена в основната част на приложението. Ако трябва да внедрите някакво разрешение за вашето приложение Delphi, може да искате да покажете диалогов прозорец за влизане / парола, преди основната форма да бъде създадена и показана на потребителя. Накратко, идеята е да се създаде, покаже и унищожи диалоговия прозорец "вход", преди да се създаде основната форма.

Основната форма на Delphi

Когато се създаде нов проект на Delphi, "Form1" автоматично се превръща в стойността на свойството MainForm (на глобалното Приложение обект). За да зададете различна форма на свойството MainForm, използвайте страницата Forms на Проект> Опции диалогов прозорец по време на проектиране. Когато основната форма се затвори, заявлението се прекратява.

Диалог за вход / парола

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

Ако промените името на формата на "TMainForm" и запишете устройството като "main.pas", то

instagram viewer
изходния код на проекта изглежда така (проектът беше запазен като "PasswordApp"):

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

Сега добавете втора форма към проекта. По дизайн втората добавена форма се изброява в списъка "Автоматично създаване на форми" в диалоговия прозорец Опции на проекта.

Назовете втория формуляр „TLoginForm“ и го премахнете от списъка „Auto-Create Forms“. Запазете устройството като "login.pas".

Добавете етикет, редактиране и бутон във формата, последвано от a клас метод за да създадете, покажете и затворите диалога за влизане / парола. Методът "Изпълнение" връща вярно, ако потребителят е въвел правилния текст в полето за парола.

Ето пълния изходен код:

мерна единица Влизане;
интерфейс
 употреби
 Windows, Съобщения, SysUtils, Варианти, Класове,
 Графика, контроли, форми, диалози, StdCtrls;
 Тип
 TLoginForm = клас(TForm)

LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
процедура LogInButtonClick (подател: TObject);

функция публичен клас Изпълнете: boolean;край;
изпълнение{$ R * .dfm}
клас функция TLoginForm. Изпълнете: boolean;Започни с TLoginForm. Създаване (нула) dotry
 Резултат: = ShowModal = mrOk;
 накрая
 Безплатно;
 край; край;
процедура TLoginForm. LogInButtonClick (Sender: TObject); beginif passwordEdit. Text = 'delphi' тогава
 ModalResult: = mrOK
 още
 ModalResult: = mrAbort;
 край;
край. 

Методът Execute динамично създава екземпляр на TLoginForm и го показва чрез ShowModal метод. ShowModal не се връща, докато формулярът се затвори. Когато формулярът се затвори, той връща стойността на ModalResult Имот.

Манипулаторът на събитията „LogInButton“ OnClick присвоява „mrOk“ на свойството ModalResult, ако потребителят е въвел правилната парола (което е „delphi“ в горния пример). Ако потребителят е въвел грешна парола, ModalResult е настроен на "mrAbort" (може да бъде всичко, освен "mrNone").

Задаването на стойност на свойството ModalResult затваря формуляра. Изпълнение връща 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" върне невярно, MainForm не се създава и приложението се прекратява без стартиране.