Straight out of the Delphi manual (the application
creates a global variable automatically as the form's
name when you create a new form):


Put this in the form's OnClose event:
   MyForm.Free;
   MyForm := nil;

To create it (from anywhere):

  If MyForm <> nil Then 
MyForm := TMyForm.Create(mainForm)

 (I always make the mainform the owner unless it's got
an obvious child relationship to something else, that
way it always gets freed during a GPF situation)

  If you create more than one, you can make sure
you've freed them all by iterating through the
Screen.Forms variable looking for that class type:

For i := 0 to Screen.Forms.count-1 do
  If Screen.Forms[i] is TMyform then MyForm.close;

   See the demo's example under the folder:
demos/db/MastApp. In fact, that application has an
example of many useful tips to use in your own app.

Dave



--- "Jamie L. Mitchell" <[EMAIL PROTECTED]>
wrote:

> Hello all:
> 
> I remember seeing a tip from ... somewhere on this
> issue.  I cannot
> seem to dig it up now.
> 
> I would like to have a global variable for a form:
> 
>      frmGlobal: TfrmGlobal;
> 
> I would like to instantiate it from any place:
> 
>      frmGlobal := TfrmGlobal.Create(Application);
> 
> and show it as a non-modal form:
> 
>      frmGlobal.Show;
> 
> When I am done with the form, I would like to close
> it and free it up.
>  Of course, the problem with this is that, at a
> later date, I may want
> to  create it again.  To avoid a memory leak, I
> clearly would not want
> to create a new instance if the existing instance
> still exists.  I
> could use:
> 
>      If (Assigned(frmGlobal)) Then ...
> 
> except that assigned merely asks the variable, "are
> you NIL?"  Since
> merely freeing the variable does not set it to NIL,
> the system thinks
> it is still there.  
> 
> Since the form could be created anywhere, and the
> form should be
> deleted when it is closed, the best way to deal with
> it would seem to
> be figuring out a way to free the form and set the
> global variable to
> NIL from the OnDestroy event.  I have had a number
> of problems doing
> this (chicken or egg problem.)  A lot of AV's come
> out of
> experimenting with this.
> 
> Does anyone have a good solution to how to free and
> NIL [the global
> variable] form from inside itself?
> 
> Thanks
> jamie
> 
> 
> 



 
____________________________________________________________________________________
8:00? 8:25? 8:40? Find a flick in no time 
with the Yahoo! Search movie showtime shortcut.
http://tools.search.yahoo.com/shortcuts/#news

Reply via email to