Het hoofdformuliervan een Delphi-toepassing is een formulier (venster) dat als eerste wordt gemaakt in de hoofdtekst van de toepassing. Als u een soort autorisatie voor uw Delphi-toepassing moet implementeren, wilt u mogelijk een dialoogvenster voor inloggen / wachtwoord weergeven voordat het hoofdformulier wordt gemaakt en aan de gebruiker wordt weergegeven. Kortom, het idee is om het "login" dialoogvenster aan te maken, weer te geven en te vernietigen voordat het hoofdformulier wordt gemaakt.
Wanneer een nieuw Delphi-project wordt gemaakt, wordt "Form1" automatisch de waarde van de eigenschap MainForm (van het algemene Toepassing voorwerp). Als u een ander formulier aan de eigenschap MainForm wilt toewijzen, gebruikt u de pagina Formulieren van de Project> Opties dialoogvenster tijdens het ontwerp. Wanneer het hoofdformulier wordt gesloten, wordt de toepassing beëindigd.
Laten we beginnen met het maken van de hoofdvorm van de applicatie. Maak een nieuw Delphi-project met één formulier. Deze vorm is van nature de hoofdvorm.
Als u de naam van het formulier wijzigt in "TMainForm" en de eenheid opslaat als "main.pas", ziet de broncode van het project er als volgt uit (het project is opgeslagen als "PasswordApp"):
programma PasswordApp;
toepassingen
vormen,
hoofd in 'main.pas' MainForm;
$ R * .res
beginnen
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
einde.
Voeg nu een tweede formulier toe aan het project. Het tweede formulier dat wordt toegevoegd, wordt standaard vermeld in de lijst "Formulieren automatisch maken" in het dialoogvenster Projectopties.
Noem het tweede formulier "TLoginForm" en verwijder het uit de lijst "Formulieren automatisch maken". Sla het apparaat op als "login.pas".
Voeg een label, bewerking en knop toe aan het formulier, gevolgd door een klassemethode om het dialoogvenster voor inloggen / wachtwoord te maken, weer te geven en te sluiten. De methode "Uitvoeren" retourneert true als de gebruiker de juiste tekst in het wachtwoordvak heeft ingevoerd.
Hier is de volledige broncode:
eenheid Log in;
koppel
toepassingen
Windows, berichten, SysUtils, varianten, klassen,
Graphics, besturingselementen, formulieren, dialoogvensters, StdCtrls;
type
TLoginForm = klasse(TForm)
LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procedure LogInButtonClick (afzender: TObject);
openbare klasse functie Uitvoeren: boolean;einde;
implementatie$ R * .dfm
klasse functie TLoginForm.Execute: boolean;begin met TLoginForm.Create (nul) dotry
Resultaat: = ShowModal = mrOk;
Tenslotte
Vrij;
end; end;
procedure TLoginForm.LogInButtonClick (Sender: TObject); beginif passwordEdit.Text = 'delphi' vervolgens
ModalResult: = mrOK
anders
ModalResult: = mrAbort;
einde;
einde.
De Execute-methode maakt dynamisch een instantie van de TLoginForm en geeft deze weer met de ShowModal methode. ShowModal keert niet terug voordat het formulier wordt gesloten. Wanneer het formulier wordt gesloten, retourneert het de waarde van de ModalResult eigendom.
De OnClick-gebeurtenishandler "LogInButton" wijst "mrOk" toe aan de eigenschap ModalResult als de gebruiker het juiste wachtwoord heeft ingevoerd (in het bovenstaande voorbeeld "delphi"). Als de gebruiker een verkeerd wachtwoord heeft opgegeven, is ModalResult ingesteld op "mrAbort" (dit kan van alles zijn behalve "mrNone").
Als u een waarde instelt op de eigenschap ModalResult, wordt het formulier gesloten. Uitvoeren retourneert true als ModalResult gelijk is aan "mrOk" (als de gebruiker het juiste wachtwoord heeft ingevoerd).
U hoeft nu alleen nog te controleren of het hoofdformulier niet is gemaakt als de gebruiker het juiste wachtwoord niet heeft opgegeven.
Dit is hoe de broncode van het project eruit zou moeten zien:
programma PasswordApp;
toepassingen
vormen,
main in 'main.pas' MainForm,
log in in 'login.pas' LoginForm;
$ R * .res
beginif TLoginForm.Execute thenbegin
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
endelsebegin
Application.MessageBox ('U bent niet geautoriseerd om de applicatie te gebruiken. Het wachtwoord is "delphi".', 'Password Protected Delphi application');
end; end.
Let op het gebruik van het if dan else-blok om te bepalen of het hoofdformulier moet worden gemaakt. Als "Uitvoeren" onwaar retourneert, wordt MainForm niet gemaakt en wordt de toepassing beëindigd zonder te starten.