Hi Jess,
>because using THISFORM.RELEASE OR _SCREEN.FORMS[i].RELEASE does not fire QUERYUNLOAD event which is important one on our Framework. :)
Make it a practice to return .T. or .F. in your QueryUnload that coexists with the deafult or NODEFAULT respectivly. THen you can simply do:
for lnForm = _screen.formcount to 1 step -1
if _screen.forms[lnForm].QueryUnload()
_screen.forms[lnForm].Release()
endif
endfor
THere, now you are OO and use QueryUnload.