Avis

Comment créer, utiliser et fermer des formulaires dans Delphi

Comment créer, utiliser et fermer des formulaires dans Delphi

Dans Delphi, chaque projet a au moins une fenêtre - la fenêtre principale du programme. Toutes les fenêtres d'une application Delphi sont basées sur un objet TForm.

Forme

Les objets de formulaire sont les éléments de base d'une application Delphi, les fenêtres avec lesquelles un utilisateur interagit lorsqu'il exécute l'application. Les formulaires ont leurs propres propriétés, événements et méthodes avec lesquels vous pouvez contrôler leur apparence et leur comportement. Une fiche est en réalité un composant Delphi, mais contrairement à d'autres composants, une fiche n'apparaît pas dans la palette de composants.

Nous créons normalement un objet de formulaire en démarrant une nouvelle application (Fichier | Nouvelle application). Ce formulaire nouvellement créé sera, par défaut, le formulaire principal de l'application, le premier formulaire créé au moment de l'exécution.

Remarque: pour ajouter un formulaire supplémentaire au projet Delphi, sélectionnez Fichier | Nouveau formulaire.

Naissance

OnCreate
L'événement OnCreate est déclenché lors de la création d'un TForm, c'est-à-dire une seule fois. L'instruction responsable de la création du formulaire se trouve dans la source du projet (si le formulaire est défini pour être créé automatiquement par le projet). Lorsqu'un formulaire est en cours de création et que sa propriété Visible a la valeur True, les événements suivants se produisent dans l'ordre indiqué: OnCreate, OnShow, OnActivate, OnPaint.

Vous devez utiliser le gestionnaire d'événements OnCreate pour effectuer, par exemple, des tâches d'initialisation telles que l'allocation de listes de chaînes.

Tous les objets créés dans l'événement OnCreate doivent être libérés par l'événement OnDestroy.

OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint…

OnShow
Cet événement indique que le formulaire est affiché. OnShow est appelé juste avant qu'un formulaire ne devienne visible. Outre les formulaires principaux, cet événement se produit lorsque nous définissons la propriété de formulaires visible sur True ou appelons la méthode Show ou ShowModal.

OnActivate
Cet événement est appelé lorsque le programme active le formulaire, c'est-à-dire lorsqu'il reçoit le focus. Utilisez cet événement pour changer le contrôle qui devient réellement actif si ce n'est pas celui souhaité.

OnPaint, OnResize
Des événements tels que OnPaint et OnResize sont toujours appelés après la création initiale du formulaire, mais sont également appelés à plusieurs reprises. OnPaint se produit avant que tous les contrôles de la forme soient peints (utilisez-le pour une peinture spéciale sur la forme).

La vie

La naissance d'une forme n'est pas aussi intéressante que peuvent l'être sa vie et sa mort. Lorsque votre formulaire est créé et que tous les contrôles attendent que les événements soient gérés, le programme s'exécute jusqu'à ce que quelqu'un tente de fermer le formulaire!

Mort

Une application événementielle cesse de s'exécuter lorsque tous ses formulaires sont fermés et qu'aucun code n'est en cours d'exécution. Si un formulaire masqué existe toujours à la fermeture du dernier formulaire visible, votre application semblera s'être terminée (car aucun formulaire n'est visible), mais continuera en fait de s'exécuter jusqu'à ce que tous les formulaires masqués soient fermés. Imaginez une situation où le formulaire principal est caché tôt et où tous les autres formulaires sont fermés.

… OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy

OnCloseQuery
Lorsque nous essayons de fermer le formulaire à l'aide de la méthode Close ou par un autre moyen (Alt + F4), l'événement OnCloseQuery est appelé. Ainsi, le gestionnaire d'événements pour cet événement est l'endroit idéal pour intercepter la fermeture d'un formulaire et l'empêcher. OnCloseQuery est utilisé pour demander aux utilisateurs s’ils sont certains de vouloir réellement fermer le formulaire.

procédure TForm1.FormCloseQuery (Sender: TObject; var CanClose: Boolean);

commencer

  si MessageDlg ('Vraiment fermer cette fenêtre?', MtConfirmation, mbOk, mbCancel, 0) = mrCancel puis CanClose: = False;

fin;

Un gestionnaire d'événements OnCloseQuery contient une variable CanClose qui détermine si un formulaire est autorisé à se fermer. Le gestionnaire d'événements OnCloseQuery peut définir la valeur de CloseQuery sur False (via le paramètre CanClose), en abandonnant la méthode Close.

OnClose
Si OnCloseQuery indique que le formulaire doit être fermé, l'événement OnClose est appelé.

L'événement OnClose nous donne une dernière chance d'empêcher la fermeture du formulaire. Le gestionnaire d'événements OnClose a un paramètre Action, avec les quatre valeurs possibles suivantes:

  • caone. Le formulaire n'est pas autorisé à fermer. Comme si nous avions défini CanClose sur False dans OnCloseQuery.
  • masquer. Au lieu de fermer le formulaire, vous le masquez.
  • caFree. Le formulaire est fermé. La mémoire allouée est libérée par Delphi.
  • peut minimiser. Le formulaire est minimisé plutôt que fermé. C'est l'action par défaut pour les formulaires enfants MDI. Lorsqu'un utilisateur ferme Windows, l'événement OnCloseQuery est activé, pas OnClose. Si vous souhaitez empêcher Windows de s’arrêter, placez votre code dans le gestionnaire d’événements OnCloseQuery. Bien entendu, CanClose = False ne le fera pas.

OnDestroy
Une fois que la méthode OnClose a été traitée et que le formulaire doit être fermé, l'événement OnDestroy est appelé. Utilisez cet événement pour les opérations opposées à celles de l'événement OnCreate. OnDestroy est utilisé pour libérer des objets liés au formulaire et libérer la mémoire correspondante.

Lorsque le formulaire principal d'un projet se ferme, l'application se termine.