FIX: PAGE UP and PAGE DOWN in FormSet with Toolbar Crashes VFP (160917)
The information in this article applies to:
- Microsoft Visual FoxPro for Windows 5.0
This article was previously published under Q160917 SYMPTOMS
When you use the PAGE UP or the PAGE DOWN keys in a Formset that contains a
Toolbar, Visual FoxPro 5.0 crashes.
WORKAROUND
Put the following code in the KeyPress Method of the form. However, the
best location would be in the KeyPress Method of the form super class:
DO CASE
CASE nKeyCode = 3 &&PageDown
NODEFAULT && Don't let VFP do it's own thing for this KeyStroke.
&& Loop through the forms in the Formset.
FOR i = 1 TO THISFORMSET.FORMCOUNT
&& Find the active form in the forms collection.
IF THISFORMSET.FORMS(i).NAME = THISFORMSET.ACTIVEFORM.NAME
&& See if the next number(i) in the Formset is a valid number
&& regarding FormCount.
IF BETWEEN(i+1,1,THISFORMSET.FORMCOUNT)
&& If it is, see if the next form is a Form and not a Toolbar.
IF UPPER(THISFORMSET.FORMS(i+1).baseclass) = 'FORM'
&& If it is, show the Form and get out.
thisformset.FORMS(i+1).SHOW()
EXIT
ENDIF
ELSE
&& If the next number(i) was not a valid number regarding
&& FormCount, start the loop again from the top. This keeps
&& the "expected flow" or expected navigation of the forms.
FOR li = 1 TO THISFORMSET.FORMCOUNT
&& See if the next form in the Formset is a Form and not a
&& Toolbar.
IF UPPER(THISFORMSET.FORMS(li).baseclass) = 'FORM'
&& If it is, Show the Form and get out.
thisformset.FORMS(li).SHOW()
EXIT
ENDIF
ENDFOR
ENDIF
ENDIF
ENDFOR
CASE nKeyCode = 18 && PageUp
NODEFAULT && Don't let VFP do it's own thing for this KeyStroke.
&& Loop through the forms in the Formset.
FOR i = 1 TO THISFORMSET.FORMCOUNT
&& Find the active form in the forms collection.
IF THISFORMSET.FORMS(i).NAME = THISFORMSET.ACTIVEFORM.NAME
&& See if the previous number(i) in the Formset is a valid number
&& regarding FormCount.
IF BETWEEN(i-1,1,THISFORMSET.FORMCOUNT)
&& If it is, see if the next form is a Form and not a Toolbar.
IF UPPER(THISFORMSET.FORMS(i-1).baseclass) = 'FORM'
&& If it is, Show the Form and get out.
thisformset.FORMS(i-1).SHOW()
EXIT
ELSE
&& If the previous number(i) was not a valid number regarding
&& FormCount, start the loop again from the bottom. This keeps
&& the "expected flow" or expected navigation of the forms.
FOR li = THISFORMSET.FORMCOUNT TO 1 STEP -1
&& See if the next form in the Formset is a Form and not a
&& Toolbar.
IF UPPER(THISFORMSET.FORMS(li).baseclass) = 'FORM'
&& If it is, Show the Form and get out.
thisformset.FORMS(li).SHOW()
EXIT
ENDIF
ENDFOR
EXIT
ENDIF
ENDIF
ENDIF
ENDFOR
ENDCASE
STATUS
Microsoft has confirmed this to be a problem in the Microsoft products
listed at the beginning of this article. This problem has been fixed in
Visual FoxPro 5.0a.
Modification Type: | Major | Last Reviewed: | 10/16/2002 |
---|
Keywords: | kbBug kbProgramming kbvfp500aFIX KB160917 |
---|
|