Difference between revisions of "Testing, if form exists"
From Lazarus wiki
Jump to navigationJump to searchm |
m (Fixed syntax highlighting) |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Testing, if form exists}} | {{Testing, if form exists}} | ||
− | + | ||
Sometimes a [[TForm|form]] may be launched from several places in a program. If it already exists, it only needs to be brought to the front. If not, it needs to be created. | Sometimes a [[TForm|form]] may be launched from several places in a program. If it already exists, it only needs to be brought to the front. If not, it needs to be created. | ||
− | This method is only needed if the form is not [[Form_Tutorial#Create_a_Lazarus_designed_form_dynamically | auto created]] ( | + | This method is only needed if the form is not [[Form_Tutorial#Create_a_Lazarus_designed_form_dynamically | auto created]] (ie not listed under Project|Project Options|Forms|Available forms). |
The easiest way is: | The easiest way is: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
if (MyForm = nil) then Application.CreateForm(TMyForm, MyForm); | if (MyForm = nil) then Application.CreateForm(TMyForm, MyForm); | ||
MyForm.Show; | MyForm.Show; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Use CloseAction := caFree in the form's OnClose event | + | Use <code>CloseAction := caFree</code> in the form's OnClose event, like so: |
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
− | procedure TMyForm. | + | procedure TMyForm.FormClose(Sender: Tobject; var Closeaction: Tcloseaction); |
begin | begin | ||
CloseAction := caFree; | CloseAction := caFree; | ||
Line 29: | Line 29: | ||
*Reference to any created form of that class should be stored in ''a single global'' variable. | *Reference to any created form of that class should be stored in ''a single global'' variable. | ||
}} | }} | ||
− |
Latest revision as of 10:10, 29 February 2020
│
Deutsch (de) │
English (en) │
français (fr) │
Sometimes a form may be launched from several places in a program. If it already exists, it only needs to be brought to the front. If not, it needs to be created.
This method is only needed if the form is not auto created (ie not listed under Project|Project Options|Forms|Available forms).
The easiest way is:
if (MyForm = nil) then Application.CreateForm(TMyForm, MyForm);
MyForm.Show;
Use CloseAction := caFree
in the form's OnClose event, like so:
procedure TMyForm.FormClose(Sender: Tobject; var Closeaction: Tcloseaction);
begin
CloseAction := caFree;
MyForm := nil;
End;
This method is taken from forum discussions.