On Sat, 2012-08-11 at 13:47 +0200, Fabien Bodard wrote:
> Or simply:
> If FMain then
> 
> If fmain is not used then it is not instanciate so its value must be
> null... I think...
> 
> Another way can be to add a static value to fmain
> 
> 'in fmain
> 
> Static Private  $iCnt as integer
> 
> Property Read IsOpened as boolean
> 
> PUblic sub _New()
> 
> inc $iCnt
> 
> endif
> 
> Public sub Form_Close()
> 
>   dec $iCnt
> 
> end
> 
> 
> Static Public Function IsOpened_Read() as Boolean
> 
>   Return $iCnt >0
> 
> end
> 
> 
> 'so in form 2 you can call :
> 
> 
> if FMain.IsOpened then ...


However, remember that if a form has been opened and then closed
non-modally, the form object remains. It is not null, but invalid.
(http://gambasdoc.org/help/def/invalid?v3)

In that case, checking for either IsNull(myForm) or trying to reference
a symbol within the form will both result in an Invalid Object(29) error
(http://gambasdoc.org/help/error/iobject?v3).

Typically, this arises when a non-modal child form is shown (and closed)
several times during an execution or when trying to close any non-modal
child forms when the program is exiting.

In these cases, the solution is to set the Persistent property of the
child form, either in the designer or via myForm.Persistent=True.
That way, you can always check for IsNull(myForm) and then
myForm.Visible with success.

So my generalised algorithm for non-modal forms is:
1. Ensure that the form object is created with Persistent=true
2. Check for "form is shown" by
        If not IsNull(myForm)
          If MyForm.Visible then
            ...
hth
Bruce




------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Gambas-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to