************************************************** *-- Class: testgrid (c:\clients\nccc\rapidref2\libs\atemp.vcx) *-- ParentClass: form *-- BaseClass: form *-- Time Stamp: 06/26/03 11:05:04 AM * DEFINE CLASS testgrid AS form DoCreate = .T. Caption = "Form" Name = "testgrid" ADD OBJECT grid1 AS grid WITH ; Height = 157, ; Left = 26, ; RecordSource = "ContactList", ; Top = 10, ; Width = 313, ; Name = "Grid1" ADD OBJECT text1 AS textbox WITH ; ControlSource = "contactlist.cName", ; Height = 24, ; Left = 47, ; Top = 188, ; Width = 274, ; Name = "Text1" PROCEDURE Init if ! dodefault() return .F. endif define pad TestGridRelease of _mSysMenu prompt "\<Test" before _MEdit on selection pad TestGridRelease of _mSysMenu do TestRelease ENDPROC PROCEDURE Load open database data\maintenance\rapidref set database to RAPIDREF private vp_providerid vp_providerid = 1 use lv_providercontacts alias contactlist ENDPROC PROCEDURE Destroy set SysMenu to default dodefault() ENDPROC ENDDEFINE * *-- EndDefine: testgrid **************************************************Here is the test driver program:
x=newobject("testgrid","libs\atemp.vcx") x.Show() read events cancel procedure TestRelease I = _screen.FormCount do while m.I > 0 loForm = _screen.Forms[m.I] if upper(loForm.Class) = "TESTGRID" loForm.Release() exit endif enddoI set a breakpoint in the TestRelease procedure and step through the release. If the cursor is in the text box, the form is released before exiting the procedure. If the cursor is in the grid, the form isn't released until the procedure is exited.