BUG: Form Not Released When Focus on Grid and Modal Form Started

ID: Q178666


The information in this article applies to:
  • Microsoft Visual FoxPro for Windows, versions 3.0, 3.0b, 5.0, 5.0a, 6.0
  • Microsoft Visual FoxPro for Macintosh, version 3.0b


SYMPTOMS

A form, on which a grid has focus, remains visible after the form has been programmatically released and a modal form has been instantiated. The form containing the grid remains visible until the modal form has been released.


RESOLUTION

Set the visible property of the form containing the grid to False (.f.) before releasing the form, using the following code:


   PROCEDURE closescreens
   IF _SCREEN.FORMCOUNT > 0
   FOR i = _SCREEN.FormCount TO 1 STEP -1
   _SCREEN.FORMS(i).VISIBLE=.F.
   _SCREEN.FORMS(i).RELEASE
   ENDFOR
   ENDIF
   RETURN 


STATUS

Microsoft is researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.


MORE INFORMATION

This behavior is not observed when a form, containing a grid object, is programmatically released under the following conditions:

  • A grid object does not have focus.


  • The WindowType property of the form being instantiated, after release of the form containing the grid, is set to 0 - Modeless.


Steps to Reproduce Behavior

  1. Create a form called gridfrm and place a grid object on the form.


  2. Create a second form called modalfrm and set its WindowType property to 1 - Modal.


  3. Add the following code to the forms Click event:
    
          =endjob() 


  4. Create a program file named Norelease.prg using the following code:
    
          CLEAR
          SET SYSMENU TO
          SET SYSMENU AUTOMATIC
          DEFINE PAD modal_frm OF _MSYSMENU PROMPT "\<Modal Form" COLOR
          SCHEME 3 ;
          KEY ALT+M, ""
          DEFINE PAD exit_prg OF _MSYSMENU PROMPT "E\<xit" COLOR SCHEME 3 ;
          KEY ALT+X, ""
          ON SELECTION PAD modal_frm OF _MSYSMENU =runmodal()
          ON SELECTION PAD exit_prg OF _MSYSMENU =endjob()
          USE home()+"SAMPLES\DATA\CUSTOMER"
          DO FORM gridfrm
          READ EVENTS
          SET SYSMENU TO DEFAULT
          RETURN
    
          PROCEDURE closescreens
          IF _SCREEN.FORMCOUNT > 0
          FOR i = _SCREEN.FORMCOUNT TO 1 STEP -1
          _SCREEN.FORMS(i).RELEASE
          ENDFOR
          ENDIF
          RETURN
    
          PROCEDURE runmodal
          =closescreens()
          DO FORM modalfrm
          RETURN
    
          PROCEDURE endjob
          =closescreens()
          CLEAR EVENTS
          RETURN 


  5. Run Norelease.prg.


  6. Click the Modal Form menu item.


Additional query words:

Keywords : kbcode kbMAC kbVFp kbVFp300bug kbVFp500bug kbVFp600bug FxprgClassoop FxprgGrid
Version : MACINTOSH:3.0b;WINDOWS:3.0,3.0b,5.0,5.0a,6.0
Platform : MACINTOSH WINDOWS
Issue type : kbbug


Last Reviewed: August 11, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.