Delphi inloggningsformulärskod

MainFormför en Delphi-applikation är ett formulär (fönster) som är det första som skapas i huvuddelen av applikationen. Om du behöver implementera någon form av behörighet för din Delphi-applikation kanske du vill visa en inloggnings- / lösenorddialog innan huvudformuläret skapas och visas för användaren. Kort sagt, idén är att skapa, visa och förstöra dialogrutan "inloggning" innan du skapar huvudformuläret.

Delphi MainForm

När ett nytt Delphi-projekt skapas, blir "Form1" automatiskt värdet på egenskapen MainForm (av det globala) Ansökan objekt). För att tilldela en annan form till egenskapen MainForm använder du sidan Formulär för Projekt> Alternativ dialogrutan vid designtid. När huvudformuläret stängs avslutas applikationen.

Logga in / Lösenorddialog

Låt oss börja med att skapa huvudformen för applikationen. Skapa ett nytt Delphi-projekt som innehåller en form. Denna form är, genom design, huvudformen.

Om du ändrar formens namn till "TMainForm" och sparar enheten som "main.pas" ser projektets källkod ut så här (projektet sparades som "PasswordApp"):

 
 program PasswordApp;
användningar
formulär,
 huvud i 'main.pas' MainForm;
$ R * .res
 
 Börja
 Application.Initialize;
 Application.CreateForm (TMainForm, MainForm);
 Application.Run;
 slutet.

Lägg till ett andra formulär till projektet. Genom design visas den andra formen som läggs till i listan "Auto-Create Forms" i dialogrutan Project Options.

Namnge den andra formen "TLoginForm" och ta bort den från listan "Auto-Create Forms". Spara enheten som "login.pas".

Lägg till en etikett, redigera och knapp i formuläret, följt av en klassmetod för att skapa, visa och stänga dialogrutan för inloggning / lösenord. Metoden "Utför" returnerar sant om användaren har angett rätt text i lösenordsrutan.

Här är den fullständiga källkoden:

 
 enhet logga in;
gränssnitt
 
 användningar
 Windows, meddelanden, SysUtils, varianter, klasser,
 Grafik, kontroller, formulär, dialoger, StdCtrls;
 
 typ
 TLoginForm = klass(TForm)

LogInButton: TButton;
pwdLabel: TLabel;
lösenordEdit: TEdit;
procedur LogInButtonClick (avsändare: TObject);

publicclass-funktion Utför: boolean;slutet;
genomförande$ R * .dfm
 
klass funktion TLoginForm.Execute: boolean;börja med TLoginForm.Create (noll) dotry
 Resultat: = ShowModal = mrOk;
 till sist
 Fri;
 avsluta; ände;
procedur TLoginForm.LogInButtonClick (avsändare: TObject); beginif passwordEdit.Text = 'delphi' sedan
 ModalResult: = mrOK
 annan
 ModalResult: = mrAbort;
 slutet;
slutet. 

Execute-metoden skapar dynamiskt en instans av TLoginForm och visar den med hjälp av ShowModal metod. ShowModal kommer inte tillbaka förrän formuläret stängs. När formuläret stängs returnerar det värdet på ModalResult fast egendom.

Händelseshanteraren "LogInButton" OnClick tilldelar "mrOk" till egenskapen ModalResult om användaren har angett rätt lösenord (som är "delphi" i exemplet ovan). Om användaren har angett ett fel lösenord är ModalResult inställt på "mrAbort" (det kan vara allt annat än "mrNone").

Att ställa in ett värde på egenskapen ModalResult stänger formuläret. Execute returnerar sant om ModalResult är lika med "mrOk" (om användaren har angett rätt lösenord).

Skapa inte MainForm innan du loggar in

Nu behöver du bara se till att huvudformuläret inte skapas om användaren inte har angett rätt lösenord.

Så här ska projektets källkod se ut:

 
 program PasswordApp;
användningar
formulär,
main i 'main.pas' MainForm,
logga in i 'login.pas' LoginForm;
 
 $ R * .res
 
 beginif TLoginForm.Execute thenbegin
 Application.Initialize;
 Application.CreateForm (TMainForm, MainForm);
 Application.Run;
 endelsebegin
 Application.MessageBox ('Du har inte behörighet att använda applikationen. Lösenordet är' delphi '.', 'Lösenordsskyddat Delphi-program');
 ände; ände.

Notera användningen av if-annars-blocket för att avgöra om huvudformuläret ska skapas. Om "Execute" returnerar falskt skapas inte MainForm och applikationen avslutas utan att starta.