Het hoofdformulier van 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.
Het Delphi MainForm
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.
Login / Wachtwoord Dialoog
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", de broncode van het project ziet er zo uit (het project is opgeslagen als "PasswordApp"):
programma PasswordApp;
toepassingen
Vormen,
hoofd in 'main.pas' {MainForm};
{$ R * .res}
beginnen
Toepassing. Initialiseren;
Toepassing. CreateForm (TMainForm, MainForm);
Toepassing. Rennen;
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 klasse methode om het aanmeldings- / wachtwoorddialoogvenster te maken, te tonen 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, Classes,
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. Uitvoeren: boolean;begin met TLoginForm. Maken (nihil) dotry
Resultaat: = ShowModal = mrOk;
Tenslotte
Vrij;
einde; einde;
procedure TLoginForm. LogInButtonClick (afzender: TObject); beginif passwordEdit. Tekst = 'delphi' vervolgens
ModalResult: = mrOK
anders
ModalResult: = mrAbort;
einde;
einde.
De Execute-methode dynamisch creëert een exemplaar 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).
Maak geen MainForm voordat u zich aanmeldt
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. Uitvoeren dan begon
Toepassing. Initialiseren;
Toepassing. CreateForm (TMainForm, MainForm);
Toepassing. Rennen;
endelsebegin
Toepassing. MessageBox ('U bent niet bevoegd om de applicatie te gebruiken. Het wachtwoord is "delphi". ',' Password Protected Delphi application ');
einde; einde.
Let op het gebruik van de als dan anders 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.