SET PROCEDURE TO dx ON KEY LABEL CTRL+A do closeme PUBLIC o1, o2 ,o3, o4 o1 = CREATEOBJECT([t1]) o1.Caption = "First" o2 = CREATEOBJECT([t1]) o2.Caption = "Second" o3 = CREATEOBJECT([t1]) o3.Caption = "Third" o4 = CREATEOBJECT([t1]) o4.Caption = "Fourth" IF MESSAGEBOX([show t1 form as top window?] ,4 ,[]) = 6 *- press ctrl+a ,then execute MESSAGEBOX([closeme]) first ,then execute MESSAGEBOX([destroy]) o4.Show o3.show o2.Show o1.show ELSE *- press ctrl+a ,then execute MESSAGEBOX([destroy]) first ,then execute MESSAGEBOX([closeme]) o1.show o2.Show o3.show o4.Show ENDIF DEFINE CLASS t1 as Form PROCEDURE destroy MESSAGEBOX([destroy]+THISFORM.Caption) ENDPROC ENDDEFINE PROCEDURE closeme RELEASE o4 RELEASE o3 RELEASE o2 RELEASE o1 MESSAGEBOX([closeme]) ON key ENDPROC>Different code-execution order by whether t1 window is current active window.
> >SET PROCEDURE TO xd >ON KEY LABEL CTRL+A do closeme > >PUBLIC o1 ,o3 >o1 = CREATEOBJECT([t1]) >o3 = CREATEOBJECT([t2]) >IF MESSAGEBOX([show t1 form as top window?] ,4 ,[]) = 6 > *- press ctrl+a ,then execute MESSAGEBOX([closeme]) first ,then execute MESSAGEBOX([destroy]) > o3.show > o1.show >ELSE > *- press ctrl+a ,then execute MESSAGEBOX([destroy]) first ,then execute MESSAGEBOX([closeme]) > o1.show > o3.show >ENDIF >DEFINE CLASS t1 as Form > PROCEDURE destroy > MESSAGEBOX([destroy]) > ENDPROC >ENDDEFINE > >DEFINE CLASS t2 as Form > ADD OBJECT c1 as commandbutton > PROCEDURE c1.click > =cl() > ENDPROC >ENDDEFINE > > >PROCEDURE closeme > RELEASE o1 > RELEASE o3 > MESSAGEBOX([closeme]) > ON key >ENDPROC > >PROCEDURE cl > =closeme() >ENDPROC > >