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.
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.
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).
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.