Codul formularului de autentificare Delphi

MainForma unei aplicații Delphi este un formular (fereastră) care este primul creat în corpul principal al aplicației. Dacă trebuie să implementați un fel de autorizare pentru aplicația dvs. Delphi, este posibil să doriți să afișați un dialog de conectare / parolă înainte ca formularul principal să fie creat și afișat utilizatorului. Pe scurt, ideea este să creați, să afișați și să distrugeți dialogul „autentificare” înainte de a crea formularul principal.

Mainform Delphi

Când este creat un nou proiect Delphi, "Form1" devine automat valoarea proprietății MainForm (a globalului) cerere obiect). Pentru a atribui un formular diferit proprietății MainForm, utilizați pagina Formulare din Proiect> Opțiuni caseta de dialog la momentul proiectării. Când se închide formularul principal, cererea se încheie.

Dialog autentificare / parolă

Să începem prin crearea formei principale a cererii. Creați un nou proiect Delphi care conține un formular. Această formă este, prin design, forma principală.

Dacă schimbați numele formularului în „TMainForm” și salvați unitatea ca „main.pas”, codul sursă al proiectului arată astfel (proiectul a fost salvat ca „PasswordApp”):

 
 program PasswordApp;
utilizări
Formulare,
 principal în 'main.pas' MainForm;
$ R * .res
 
 începe
 Application.Initialize;
 Application.CreateForm (TMainForm, MainForm);
 Application.Run;
 Sfârșit.

Acum, adăugați un al doilea formular la proiect. După proiectare, cel de-al doilea formular adăugat este listat în lista „Creare automată formulare” din dialogul Opțiuni de proiect.

Denumiți cel de-al doilea formular „TLoginForm” și eliminați-l din lista „Formulare automate de creare”. Salvați unitatea ca „login.pas”.

Adăugați o etichetă, Editare și buton pe formular, urmată de o metodă de clasă pentru a crea, arăta și închide dialogul de conectare / parolă. Metoda „Execute” returnează adevărat dacă utilizatorul a introdus textul corect în caseta de parole.

Iată codul sursă complet:

 
 unitate Autentificare;
interfață
 
 utilizări
 Windows, mesaje, SysUtils, variante, clase,
 Grafica, Controale, Formulare, Dialoguri, StdCtrls;
 
 tip
 TLoginForm = clasă(TForm)

LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procedura LogInButtonClick (Expeditor: TObject);

funcția publicclass Executa: boolean;Sfârșit;
punerea în aplicare$ R * .dfm
 
funcția clasei TLoginForm.Execute: boolean;începe cu TLoginForm.Create (zero) dotry
 Rezultat: = ShowModal = mrOk;
 in cele din urma
 Liber;
 sfârșit; end;
procedură TLoginForm.LogInButtonClick (Expeditor: TObject); beginif passwordEdit.Text = 'delphi' apoi
 ModalResult: = mrOK
 altfel
 ModalResult: = mrAbort;
 Sfârșit;
Sfârșit. 

Metoda Execute creează dinamic o instanță a TLoginForm și o afișează folosind ShowModal metodă. ShowModal nu revine până la închiderea formularului. Când formularul se închide, returnează valoarea ModalResult proprietate.

Manipulatorul de evenimente „LogInButton” OnClick atribuie „mrOk” proprietății ModalResult dacă utilizatorul a introdus parola corectă (care este „delphi” în exemplul de mai sus). Dacă utilizatorul a furnizat o parolă greșită, ModalResult este setat pe „mrAbort” (poate fi orice, cu excepția „mrNone”).

Setarea unei valori pentru proprietatea ModalResult închide formularul. Execute returnează true dacă ModalResult este egal cu "mrOk" (dacă utilizatorul a introdus parola corectă).

Nu creați MainForm înainte de autentificare

Acum trebuie doar să vă asigurați că formularul principal nu este creat dacă utilizatorul nu a furnizat parola corectă.

Iată cum ar trebui să arate codul sursă al proiectului:

 
 program PasswordApp;
utilizări
Formulare,
main în 'main.pas' MainForm,
conectați-vă în 'login.pas' LoginForm;
 
 $ R * .res
 
 beginif TLoginForm.Execute thenbegin
 Application.Initialize;
 Application.CreateForm (TMainForm, MainForm);
 Application.Run;
 endelsebegin
 Application.MessageBox ('Nu sunteți autorizat să utilizați aplicația. Parola este "delphi".', 'Aplicație Delphi Protejată prin parolă');
 end; end.

Rețineți utilizarea blocului if then else pentru a determina dacă forma principală ar trebui creată. Dacă „Execute” returnează fals, MainForm nu este creat și aplicația se încheie fără a porni.