Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
ON SHUTDOWN/File - Exit
Message
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00185955
Message ID:
00186124
Views:
22
>>I have this code in my File - Exit pad:
>>
>>LOCAL lnForm, lnFormToClose
>>lnFormToClose = 1
>>FOR lnForm = 1 TO _screen.FormCount
>>  IF TYPE("_screen.Forms(lnFormToClose)") == "O"
>>    IF _screen.Forms(lnFormToClose).QueryUnload()
>>      _screen.Forms(lnFormToClose).Release()
>>    ELSE
>>      RETURN .F.
>>    ENDIF
>>  ELSE
>>    lnFormToClose = lnFormToClose + 1
>>  ENDIF
>>ENDFOR
>>CLEAR EVENTS
>>DO cleanup
>>
>>...and Cleanup does CLOSE DATABASES, CLEAR ALL, SET CLASSLIB TO, and so forth.
>>
>>1) is this good ON SHUTDOWN code?
>>2) should I be looping backwards from _SCREEN.FormCount to 1?
>>
>>I didn't include all my cleanup code because I know that my question is a bit vague anyway. I don't have an application object because it is a fairly simple modified legacy app.
>
>
>You can remove some redundancy and correct as follows:
>LOCAL lnForm, lnCount
>lnCount = _screen.FormCount
>FOR lnForm = 1 TO lnCount     && have to do this because formcount
>                              && changes every time you close a form
>  IF TYPE("_screen.Forms(lnForm)") == "O"  && might also test to see if
>                                           && BASECLASS property is "FORM"
>    IF _screen.Forms(lnForm).QueryUnload()
>      _screen.Forms(lnForm).Release()
>    ELSE
>      RETURN .F.
>    ENDIF
>  ENDIF
>ENDFOR
>CLEAR EVENTS
>DO cleanup
Why would I want to test to see if .BaseClass property = "FORM"? If the object exists and is in _SCREEN.Forms() what else could it be? If it's a formset, I still want to .QueryUnload() and .Release(), right? By the way, I don't remember where this code came from, but I'm pretty sure I didn't write it, so there may be ramifications I don't understand. Also, my users probably never use the menu to close the app anyway, so the code might not have been run enough to expose its bugs.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform