The MainFormd'une application Delphi est un formulaire (fenêtre) qui est le premier créé dans le corps principal de l'application. Si vous devez implémenter une sorte d'autorisation pour votre application Delphi, vous souhaiterez peut-être afficher une boîte de dialogue de connexion / mot de passe avant que le formulaire principal soit créé et affiché pour l'utilisateur. En bref, l'idée est de créer, afficher et détruire la boîte de dialogue "login" avant de créer le formulaire principal.
Lorsqu'un nouveau projet Delphi est créé, "Form1" devient automatiquement la valeur de la propriété MainForm (du global Application objet). Pour affecter un formulaire différent à la propriété MainForm, utilisez la page Formulaires du Projet> Options boîte de dialogue au moment du design. Lorsque le formulaire principal se ferme, l'application se termine.
Commençons par créer le formulaire principal de l'application. Créez un nouveau projet Delphi contenant un formulaire. Ce formulaire est, par conception, le formulaire principal.
Si vous changez le nom du formulaire en "TMainForm" et enregistrez l'unité comme "main.pas", le code source du projet ressemble à ceci (le projet a été enregistré en tant que "PasswordApp"):
programme PasswordApp;
les usages
Formes,
principale dans 'main.pas' MainForm;
$ R * .res
commencer
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
fin.
Maintenant, ajoutez un deuxième formulaire au projet. De par la conception, le deuxième formulaire qui est ajouté est répertorié dans la liste «Création automatique de formulaires» dans la boîte de dialogue Options du projet.
Nommez le deuxième formulaire "TLoginForm" et supprimez-le de la liste "Création automatique de formulaires". Enregistrez l'unité sous "login.pas".
Ajoutez une étiquette, une modification et un bouton sur le formulaire, puis une méthode de classe pour créer, afficher et fermer la boîte de dialogue de connexion / mot de passe. La méthode "Execute" renvoie true si l'utilisateur a entré le texte correct dans la zone de mot de passe.
Voici le code source complet:
unité s'identifier;
interface
les usages
Windows, Messages, SysUtils, Variants, Classes,
Graphiques, contrôles, formulaires, boîtes de dialogue, StdCtrls;
type
TLoginForm = classe(TForm)
LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procédure LogInButtonClick (Sender: TObject);
fonction de classe publique Exécuter: booléen;fin;
la mise en oeuvre$ R * .dfm
fonction de classe TLoginForm.Execute: boolean;commencer avec TLoginForm.Create (néant) dotry
Résultat: = ShowModal = mrOk;
enfin
Gratuit;
fin; fin;
procédure TLoginForm.LogInButtonClick (Sender: TObject); beginif passwordEdit.Text = 'delphi' ensuite
ModalResult: = mrOK
autre
ModalResult: = mrAbort;
fin;
fin.
La méthode Execute crée dynamiquement une instance de TLoginForm et l'affiche à l'aide du ShowModal méthode. ShowModal ne revient que lorsque le formulaire se ferme. Lorsque le formulaire se ferme, il renvoie la valeur du ModalResult propriété.
Le gestionnaire d'événements OnClick "LogInButton" affecte "mrOk" à la propriété ModalResult si l'utilisateur a entré le mot de passe correct (qui est "delphi" dans l'exemple ci-dessus). Si l'utilisateur a fourni un mot de passe incorrect, ModalResult est défini sur "mrAbort" (il peut être tout sauf "mrNone").
La définition d'une valeur pour la propriété ModalResult ferme le formulaire. Execute renvoie true si ModalResult est égal à "mrOk" (si l'utilisateur a entré le mot de passe correct).
Vous devez maintenant vous assurer que le formulaire principal n'est pas créé si l'utilisateur n'a pas fourni le mot de passe correct.
Voici à quoi devrait ressembler le code source du projet:
programme PasswordApp;
les usages
Formes,
main dans 'main.pas' MainForm,
connectez-vous dans 'login.pas' LoginForm;
$ R * .res
beginif TLoginForm.Execute puis commencer
Application.Initialize;
Application.CreateForm (TMainForm, MainForm);
Application.Run;
endelsebegin
Application.MessageBox ('Vous n'êtes pas autorisé à utiliser l'application. Le mot de passe est "delphi".', 'Application Delphi protégée par mot de passe');
fin; fin.
Notez l'utilisation du bloc if then else pour déterminer si le formulaire principal doit être créé. Si "Execute" renvoie false, MainForm n'est pas créé et l'application se termine sans démarrer.