Information générale
Catégorie:
Gestionnaire d'écran & Écrans
>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
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement