Difference between revisions of "Testing, if form exists"
|Line 31:||Line 31:|
Use := caFree in the form's OnClose event.
Revision as of 08:36, 19 November 2013
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.
One way to do this is to use a global boolean variable which is set to true or false as the form is created or destroyed.
Another way is to use a function as below.
These functions are copied from forum discussions.
How to list all data modules opened in an Application? 
function FindForm(const aClass:TClass):TForm; var I: Integer; begin for I := 0 to Screen.FormCount -1 do if Screen.Forms[I].ClassType = aClass then begin Result := Screen.Forms[I]; Break; end; end;
Call it with:
if FindForm(TMyForm) <> nil then MyForm.Show else begin MyForm := TMyForm.Create(Application); MyForm.Show; end;
Use CloseAction := caFree in the form's OnClose event.