Hur man gör ett inloggningsformulär för Delphi

MainFormof 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 är tanken 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 namnet på formuläret till "TMainForm" och sparar enheten som "main.pas", " projektets källkod ser ut så här (projektet sparades som "PasswordApp"):

instagram viewer
program PasswordApp;
användningar
blanketter,
 huvud i 'main.pas' {MainForm};
{$ R * .res}
 Börja
 Ansökan. initialisera;
 Ansökan. CreateForm (TMainForm, MainForm);
 Ansökan. Springa;
 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 på formuläret, följt av a 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. Utför: boolean;börja med TLoginForm. Skapa(noll) dotry
 Resultat: = ShowModal = mrOk;
 till sist
 Fri;
 slutet; slutet;
procedur TLoginForm. LogInButtonClick (avsändare: TObject); startif passwordEdit. Text = 'delphi' sedan
 ModalResult: = mrOK
 annan
 ModalResult: = mrAbort;
 slutet;
slutet. 

Utför 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
blanketter,
main i 'main.pas' {MainForm},
logga in i 'login.pas' {LoginForm};
 {$ R * .res}
 beginif TLoginForm. Kör thenbegin
 Ansökan. initialisera;
 Ansökan. CreateForm (TMainForm, MainForm);
 Ansökan. Springa;
 endelsebegin
 Ansökan. MessageBox ('Du har inte behörighet att använda applikationen. Lösenordet är "delphi". ',' Lösenordsskyddat Delphi-program ');
 slutet; slutet.

Notera användningen av om då annars block för att avgöra om huvudformen ska skapas. Om "Execute" returnerar falskt skapas inte MainForm och applikationen avslutas utan att starta.