*In my projects, I direct the the form's Release() to the form's QueryUnload(): procedure Myform.Release this.queryunload * Then in QueryUnload flow is redirected to a "house-keeping" procedure procedure MyForm.QueryUnload HouseKeeper(this) * The house keeper usually assures that all open MDI forms are closed procedure HouseKeeper(oform) IF VARTYPE(MyForm)==[O] Myform.release && Sometimes I need to make the form name public ELSE ENDIF IF VARTYPE(MyForm1)==[O] Myform1.release ELSE ENDIF * etc