Difference between revisions of "Testing, if form exists/fr"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{Testing, if form exists}} <br> Parfois, une fiche peut être lancée depuis plusieurs endroits dans un programme. Si elle existe déjà, il suffit de la placer...")
 
m (Fixed syntax highlighting)
 
Line 5: Line 5:
 
La façon la plus simple est celle-ci :
 
La façon la plus simple est celle-ci :
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
if (MyForm = nil) then Application.CreateForm(TMyForm, MyForm);
 
if (MyForm = nil) then Application.CreateForm(TMyForm, MyForm);
 
MyForm.Show;                             
 
MyForm.Show;                             
Line 12: Line 12:
 
Utiliser <code>CloseAction := caFree;</code> dans l'événement OnClose de la fiche.
 
Utiliser <code>CloseAction := caFree;</code> dans l'événement OnClose de la fiche.
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
procedure TMyForm.Formclose(Sender: Tobject; var Closeaction: Tcloseaction);
 
procedure TMyForm.Formclose(Sender: Tobject; var Closeaction: Tcloseaction);
 
begin
 
begin
Line 27: Line 27:
 
*La référence à toute forme de cette classe devrait être enregistrée dans cette unique variable globale.
 
*La référence à toute forme de cette classe devrait être enregistrée dans cette unique variable globale.
 
}}
 
}}
<br/>
 

Latest revision as of 10:11, 29 February 2020

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.