La naissance, la vie et la mort d'une forme Delphi

Dans Delphes, 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 Objet TForm.

Forme

Objets de formulaire sont les blocs de construction de base d'une application Delphi, les fenêtres réelles 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. Un formulaire est en fait un composant Delphi, mais contrairement aux autres composants, un formulaire n'apparaît pas dans la palette des composants.

Nous créons normalement un objet 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éé lors de l'exécution.

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

instagram viewer

Naissance

OnCreate
L'événement OnCreate est déclenché lors de la première 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 configuré pour être créé automatiquement par le projet). Lorsqu'un formulaire est en cours de création et que sa propriété Visible est 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 comme 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é Forms 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 lorsque le formulaire reçoit le focus d'entrée. Utilisez cet événement pour modifier le contrôle qui obtient le focus s'il n'est pas celui souhaité.

OnPaint, OnResize
Des événements comme OnPaint et OnResize sont toujours appelés après la création initiale du formulaire, mais sont également appelés de manière répétée. OnPaint se produit avant que tous les contrôles du formulaire soient peints (utilisez-le pour une peinture spéciale sur le formulaire).

La vie

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

Décès

Une application événementielle cesse de fonctionner lorsque tous ses formulaires sont fermés et qu'aucun code n'est en cours d'exécution. Si un formulaire masqué existe toujours lorsque le dernier formulaire visible est fermé, votre demande semble avoir terminé (car aucun formulaire n'est visible), mais continuera en fait à s'exécuter jusqu'à ce que tous les formulaires masqués soient fermé. Pensez simplement à une situation où le formulaire principal est masqué tôt et 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 d'autres moyens (Alt + F4), l'événement OnCloseQuery est appelé. Ainsi, le gestionnaire d'événements pour cet événement est le lieu d'intercepter la fermeture d'un formulaire et de l'empêcher. Nous utilisons OnCloseQuery pour demander aux utilisateurs s'ils sont sûrs de vouloir vraiment fermer le formulaire.

procédure TForm1.FormCloseQuery (expéditeur: TObject; var CanClose: booléen);

commencer

siMessageDlg('Fermer vraiment cette fenêtre?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel ensuite 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:

  • caNone. Le formulaire n'est pas autorisé à fermer. Tout comme si nous avions défini le CanClose sur False dans OnCloseQuery.
  • caHide. Au lieu de fermer le formulaire, vous le cachez.
  • caFree. Le formulaire est fermé, donc sa mémoire allouée est libérée par Delphi.
  • caMinimize. Le formulaire est minimisé plutôt que fermé. Il s'agit de l'action par défaut pour les formulaires enfants MDI. Lorsqu'un utilisateur ferme Windows, l'événement OnCloseQuery est activé, pas l'OnClose. Si vous souhaitez empêcher Windows de s'arrêter, placez votre code dans le gestionnaire d'événements OnCloseQuery, bien sûr 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 désallouer 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.

instagram story viewer