Dear Vixens and Reynards:

What happens when one closes a form with a grid on it and validation is set off?

Well, interestingly/frustratingly enough, the form's QueryUnload does not fire until after the current control's LostFocus. This means that you can not code to ignore the validation because the form is closing anyway. Well, not cleanly that I can see. One can kludge something with amouseobj() as I have below (not with a grid yet). This works, but is a kludge. Is there a better way?

Run this, and click somewhere. The close button is of particular interest.

***** Start of Included Code *****
* tmpclose
* Experimenting with Form Closing
* Last Modification: 2014-03-07

#include "foxpro.h"

   ? "*** Execution begins."
   ? program()
   close all
   clear all

   *

   oForm=createobject("TestForm")
   oForm.show()
   read events

   *

   close all
   clear all
   ? "*** Execution ends."
   return



define class TestForm as form

   procedure init

      this.addobject("tb1","TestTextbox",10,10)
      this.tb1.visible=.t.

      return .t.

      endproc

   procedure queryunload

      clear events

      return

      endproc

   enddefine



define class TestTextbox as textbox

   procedure init
   lparameter ptop, pleft

      this.top=ptop
      this.left=pleft

      this.height=20
      this.width=40

      return .t.

      endproc

   procedure lostfocus

      local mousie(4)

      =amouseobj(mousie)

      activate screen
      ? mousie(1),this.objtype(mousie(1))
      ? mousie(2),this.objtype(mousie(2))
      ? mousie(3)
      ? mousie(4)

      if mousie(1)=thisform and mousie(4)<0
         activate screen
         ? "Apparently, the close button was clicked."
      else
         activate screen
         ? "unknown action"
         endif

      return

      endproc

   procedure objtype
   lparameter oObj

      do case
      case type("oObj")#T_OBJECT
         retval="not an object"
      case isnull(oObj)
         retval="null object"
      case oObj=thisform
         retval="thisform object"
      otherwise
         retval="non-null, unknown object"
         endcase

      return retval

      endproc

   enddefine
***** End of included Code *****

Sincerely,

Gene Wirchenko


_______________________________________________
Post Messages to: ProFox@leafe.com
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: http://leafe.com/archives/byMID/profox/
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to