Testing, if form exists/fr

From Free Pascal wiki

Deutsch (de) English (en) français (fr)

Parfois, une fiche peut être lancée depuis plusieurs endroits dans un programme. Si elle existe déjà, il suffit de la placer en avant-plan, sinon elle doit être créée.

La façon la plus simple est celle-ci :

if (MyForm = nil) then Application.CreateForm(TMyForm, MyForm);
MyForm.Show;

Utiliser CloseAction := caFree; dans l'événement OnClose de la fiche.

procedure TMyForm.Formclose(Sender: Tobject; var Closeaction: Tcloseaction);
begin
  CloseAction := caFree;
  MyForm := nil;
End;

Cette méthode provient des discussions dans le forum.

Warning-icon.png

Avertissement: Cette méthode a des limitations :

  • A tout moment, il ne doit pas y avoir plus d'une instance de la classe de cette fiche (la variable MyForm devient incohérente sinon).
  • La référence à toute forme de cette classe devrait être enregistrée dans cette unique variable globale.