>>Hi,
>>
>>Can you programmatically close a modal form when a user clicks anywhere outside the form?
>>
>>TIA
>
>I completely forgot (lack of sleep) how make a modeless form to be open? That is, when I make the form modeless and reference it with a LOCAL variable, it opens and closes immediately.
>Is the only way to make the modeless form stay to reference it with the PUBLIC variable?
>
>I am a bit late for a reply and I doesn't remember who inspired me for this solution.
>The solution is based on the use of 'ON KEY LABEL MOUSE _SCREEN.ActiveForm.Click()'
>Here is what I used.
>PRE>
>DEFINE CLASS frmautoclose AS frmmodaldialog OF "gc_base.vcx" && Form is closed when clicking outside the form
> *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
>
> *
> *m: frmclose
> *>
> DoCreate = .T.
> Name = "frmautoclose"
> _memberdata =
>
> >
> PROCEDURE Click
> lcWindow=MWINDOW()
> IF !(MWINDOW() == UPPER(ThisForm.Name))
> ON KEY LABEL MOUSE
> ThisForm.frmClose()
> THISFORM.Release()
> ENDIF
>
> ENDPROC
>
> PROCEDURE Destroy
> ON KEY LABEL MOUSE
> ENDPROC
>
> PROCEDURE frmclose
> * abstract method
> ENDPROC
>
> PROCEDURE Init
> IF DODEFAULT()
> ON KEY LABEL MOUSE _SCREEN.ActiveForm.Click()
> ENDIF
> ENDPROC
>
>ENDDEFINE
>
Thank you very much for your suggestion and code.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham