Das HauptformularBei einer Delphi-Anwendung handelt es sich um ein Formular (Fenster), das als erstes im Hauptteil der Anwendung erstellt wurde. Wenn Sie eine Berechtigung für Ihre Delphi-Anwendung implementieren müssen, möchten Sie möglicherweise ein Anmelde- / Kennwortdialogfeld anzeigen, bevor das Hauptformular erstellt und dem Benutzer angezeigt wird. Kurz gesagt besteht die Idee darin, den Anmeldedialog zu erstellen, anzuzeigen und zu zerstören, bevor das Hauptformular erstellt wird.
Wenn ein neues Delphi-Projekt erstellt wird, wird "Form1" automatisch zum Wert der MainForm-Eigenschaft (der globalen Eigenschaft) Anwendung Objekt). Verwenden Sie die Seite Formulare von, um der MainForm-Eigenschaft ein anderes Formular zuzuweisen Projekt> Optionen Dialogfeld zur Entwurfszeit. Wenn das Hauptformular geschlossen wird, wird die Anwendung beendet.
Beginnen wir mit der Erstellung des Hauptformulars der Anwendung. Erstellen Sie ein neues Delphi-Projekt mit einem Formular. Dieses Formular ist von Entwurf das Hauptformular.
Wenn Sie den Namen des Formulars in "TMainForm" ändern und die Unit als "main.pas" speichern, sieht der Quellcode des Projekts folgendermaßen aus (das Projekt wurde als "PasswordApp" gespeichert):
Programm PasswordApp;
Verwendet
Formen,
Main im 'main.pas' MainForm;
$ R * .res
Start
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
Ende.
Fügen Sie dem Projekt nun ein zweites Formular hinzu. Das zweite hinzugefügte Formular wird standardmäßig in der Liste "Automatisch erstellte Formulare" im Dialogfeld "Projektoptionen" aufgeführt.
Nennen Sie das zweite Formular "TLoginForm" und entfernen Sie es aus der Liste "Automatisch erstellte Formulare". Speichern Sie das Gerät als "login.pas".
Fügen Sie dem Formular eine Beschriftung, eine Bearbeitung und eine Schaltfläche hinzu, gefolgt von einer Klassenmethode zum Erstellen, Anzeigen und Schließen des Anmelde- / Kennwortdialogs. Die Methode "Execute" gibt true zurück, wenn der Benutzer den richtigen Text in das Passwortfeld eingegeben hat.
Hier ist der vollständige Quellcode:
Einheit Anmeldung;
Schnittstelle
Verwendet
Windows, Nachrichten, SysUtils, Varianten, Klassen,
Grafiken, Steuerelemente, Formulare, Dialoge, StdCtrls;
Art
TLoginForm = Klasse(TForm)
LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procedure LogInButtonClick (Sender: TObject);
publicclass Funktion Execute: boolean;Ende;
Implementierung$ R * .dfm
Klassenfunktion TLoginForm.Execute: boolean;anfangen mit TLoginForm.Create (Null) dotry
Ergebnis: = ShowModal = mrOk;
schließlich
Kostenlos;
Ende, Ende;
Verfahren TLoginForm.LogInButtonClick (Absender: TObject); beginif passwordEdit.Text = 'delphi' dann
ModalResult: = mrOK
sonst
ModalResult: = mrAbort;
Ende;
Ende.
Die Execute-Methode erstellt dynamisch eine Instanz der TLoginForm und zeigt sie mit der an ShowModal Methode. ShowModal kehrt nicht zurück, bis das Formular geschlossen wird. Wenn das Formular geschlossen wird, wird der Wert von zurückgegeben ModalResult Eigentum.
Die OnClick-Ereignisbehandlungsroutine "LogInButton" weist der ModalResult-Eigenschaft "mrOk" zu, wenn der Benutzer das richtige Kennwort eingegeben hat (im obigen Beispiel "delphi"). Wenn der Benutzer ein falsches Passwort eingegeben hat, wird ModalResult auf "mrAbort" gesetzt (es kann alles außer "mrNone" sein).
Durch Festlegen eines Werts für die ModalResult-Eigenschaft wird das Formular geschlossen. Execute gibt true zurück, wenn ModalResult gleich "mrOk" ist (wenn der Benutzer das richtige Passwort eingegeben hat).
Sie müssen jetzt nur noch sicherstellen, dass das Hauptformular nicht erstellt wird, wenn der Benutzer nicht das richtige Kennwort eingegeben hat.
So sollte der Quellcode des Projekts aussehen:
Programm PasswordApp;
Verwendet
Formen,
main in 'main.pas' MainForm,
Login in 'login.pas' LoginForm;
$ R * .res
beginif TLoginForm.Execute dann fange an
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
endelsebegin
Application.MessageBox ('Sie sind nicht berechtigt, die Anwendung zu verwenden. Das Kennwort lautet "delphi".', 'Kennwortgeschützte Delphi-Anwendung');
Ende, Ende.
Beachten Sie die Verwendung des if then else -Blocks, um zu bestimmen, ob das Hauptformular erstellt werden soll. Wenn "Execute" false zurückgibt, wird MainForm nicht erstellt und die Anwendung wird ohne Start beendet.