*********************************************************** oForm = Createobject('frmBase') oForm.Show(1) Define Class frmbase As Form Caption = "FormBase" KeyPreview = .T. *-- Reflects the answer to the questions, whether the user wants to close the form. lreleaseapproved = .F. Name = "frmbase" Add Object cmdexit As CommandButton With ; Top = 120, ; Left = 190, ; Height = 27, ; Width = 84, ; Caption = "E\<xit", ; Name = "cmdExit" Procedure KeyPress Lparameters nKeyCode, nShiftAltCtrl Activate Screen ? 'frmbase.Keypress()' If nKeyCode = 27 And nShiftAltCtrl = 0 Nodefault Thisform.Release Return Else DoDefault(nKeyCode, nShiftAltCtrl) Endif Endproc Procedure Init Activate Screen Clear ? 'frmbase.Init()' If !DoDefault() Return .F. Endif With Thisform .lreleaseapproved = .F. .AutoCenter = .T. .AutoCenter = .F. Endwith Endproc Procedure OnClose Activate Screen ? 'frmbase.Onclose()' Messagebox('Do some useful code here!') Endproc Procedure QueryUnload Activate Screen ? 'frmbase.Queryunload()' Local lnAnswer As Integer With This As Thisform *If .lreleaseapproved = .F. m.lnAnswer = Messagebox( ; 'Would you really like to close down?', ; 4+32+256+4096, .Caption) If m.lnAnswer = 6 .lreleaseapproved = .T. .OnClose() *-- I do not know, whether this is really needed here. DoDefault() Else .lreleaseapproved = .F. Nodefault Endif m.lnAnswer = 6 *Else * DoDefault() *Endif .lreleaseapproved = .F. Endwith Return Endproc Procedure Release Activate Screen ? 'frmbase.Release()' Local lnAnswer As Integer With This As Thisform *If .lreleaseapproved = .F. m.lnAnswer = Messagebox( ; 'Would you really like to close down?', ; 4+32+256+4096, .Caption) If m.lnAnswer = 6 .lreleaseapproved = .T. .OnClose() *-- I do not know, whether this is really needed here. DoDefault() Else .lreleaseapproved = .F. Nodefault Endif m.lnAnswer = 6 *Else * DoDefault() *Endif .lreleaseapproved = .F. Endwith Return Endproc Procedure Unload Activate Screen ? 'frmbase.Unload()' Nodefault *--- Do whatever needed at the very end like CLEAR EVENTS DoDefault() Endproc Procedure cmdexit.Click Thisform.Release() Endproc Enddefine ***********************************************************