MainFormof en Delphi-applikation er en formular (vindue), der er den første, der oprettes i programmets hoveddel. Hvis du har brug for at implementere en eller anden form for autorisation til din Delphi-applikation, skal du muligvis vise en login / adgangskodedialog, inden hovedformularen oprettes og vises for brugeren. Kort sagt, ideen er at oprette, vise og ødelægge dialogen "login", før du opretter hovedformularen.
Delphi MainForm
Når der oprettes et nyt Delphi-projekt, bliver "Form1" automatisk værdien af MainForm-egenskaben (for det globale) Ansøgning objekt). Hvis du vil tildele en anden form til egenskaben MainForm, skal du bruge siden Formularer på Projekt> Valgmuligheder dialogboks på designtidspunktet. Når hovedformularen lukkes, afsluttes applikationen.
Login / password-dialog
Lad os starte med at oprette hovedformen for applikationen. Opret et nyt Delphi-projekt, der indeholder en form. Denne form er, efter design, den vigtigste form.
Hvis du ændrer navnet på formularen til "TMainForm" og gemmer enheden som "main.pas", skal du
projektets kildekode ser sådan ud (projektet blev gemt som "PasswordApp"):program PasswordApp;
anvendelser
former,
vigtigste i 'main.pas' {MainForm};
{$ R * .res}
begynde
Ansøgning. Initialiser;
Ansøgning. CreateForm (TMainForm, MainForm);
Ansøgning. Løb;
ende.
Tilføj nu en anden form til projektet. Ved design vises den anden form, der er tilføjet, i listen "Auto-Create Forms" i dialogboksen Project Options.
Navngiv den anden form "TLoginForm" og fjern den fra listen "Auto-Create Forms". Gem enheden som "login.pas".
Tilføj en etiket, rediger og knap på formularen efterfulgt af en klassemetode at oprette, vise og lukke dialogboksen login / adgangskode. Metoden "Udfør" returnerer sand, hvis brugeren har indtastet den rigtige tekst i adgangskodeboksen.
Her er den fulde kildekode:
enhed Log på;
grænseflade
anvendelser
Windows, meddelelser, SysUtils, varianter, klasser,
Grafik, kontrol, formularer, dialoger, StdCtrls;
type
TLoginForm = klasse(TForm)
LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procedure LogInButtonClick (Afsender: TObject);
offentlig klassefunktion Udføre: boolsk;ende;
implementering{$ R * .dfm}
klassefunktion TLoginForm. Udføre: boolsk;Begynd med TLoginForm. Skab(nul) dotry
Resultat: = ShowModal = mrOk;
endelig
Gratis;
ende; ende;
procedure TLoginForm. LogInButtonClick (Afsender: TObject); startif passwordEdit. Tekst = 'delphi' derefter
ModalResult: = mrOK
andet
ModalResult: = mrAbort;
ende;
ende.
Udførelsesmetoden skaber dynamisk et eksempel på TLoginForm og viser det ved hjælp af ShowModal metode. ShowModal vender ikke tilbage, før formularen lukkes. Når formularen lukkes, returnerer den værdien af ModalResult ejendom.
OnClick-hændelseshåndtereren "LogInButton" tildeler "mrOk" til egenskaben ModalResult, hvis brugeren har indtastet den korrekte adgangskode (som er "delphi" i ovenstående eksempel). Hvis brugeren har angivet en forkert adgangskode, er ModalResult indstillet til "mrAbort" (det kan være alt andet end "mrNone").
Indstilling af en værdi til egenskaben ModalResult lukker formularen. Udfør returnerer sandt, hvis ModalResult er lig med "mrOk" (hvis brugeren har indtastet det rigtige kodeord).
Opret ikke MainForm før login
Du behøver nu kun at sikre dig, at hovedformularen ikke oprettes, hvis brugeren ikke har givet den korrekte adgangskode.
Sådan ser projektets kildekode ud:
program PasswordApp;
anvendelser
former,
main i 'main.pas' {MainForm},
log ind i 'login.pas' {LoginForm};
{$ R * .res}
beginif TLoginForm. Udfør thenbegin
Ansøgning. Initialiser;
Ansøgning. CreateForm (TMainForm, MainForm);
Ansøgning. Løb;
endelsebegin
Ansøgning. MessageBox ('Du har ikke tilladelse til at bruge applikationen. Adgangskoden er "delphi". ',' Adgangskodebeskyttet Delphi-applikation ');
ende; ende.
Bemærk brugen af hvis så ellers blokere for at bestemme, om hovedformen skal oprettes. Hvis "Execute" returnerer falsk, oprettes MainForm ikke, og applikationen afsluttes uden at starte.