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.