General information
Category:
Forms & Form designer
Title:
ON ERROR calls in FORMS
I'm trying to adapt a FoxPro 2.6a program to a VFP5a form and I can't get a handle
on the ON ERROR command. I'm using Graphics Server, a 3rd-party graphing library,
to create polygons of every state in the U.S. In FPW 2.6, I have an ON ERROR DO NOTHING
error routine that goes to the procedure, NOTHING, and returns without doing anything.
I have to do this in case there is a call to a nonexistant state polygon procedure. The
program would bomb out otherwise. I can't seem to get this to work in a VFP5 form.
How do I go about doing this? The state polygon procedures I mentioned above are now
methods in the form. Listed below is the CLICK method - everything works except the ON
ERROR call.
*:===============================================
*: Object: cmdMap
*: E/M: CLICK
*: Purpose: Draws state polygons when user
*: clicks the Redraw Map command
*: button.
*:===============================================
r=GSUseView(THISFORM.oleMap.NWin,0) && Make sure we are using the correct GS View.
THISFORM.oleMap.Background = 7 && Assign gray to background color.
THISFORM.oleMap.GraphType = 0 && Do not display the default graph.
THISFORM.oleMap.DRAWMODE = 1 && Clear the view.
THISFORM.SplitSet() && Call method assigning default coordiates.
ON ERROR DO THISFORM.Nothing && Call dummy error handler method so we won't
*: bomb out when calling nonexistent methods.
SELECT states && Go to the STATES table workarea.
SCAN && Scan the entire STATES table.
IF BETWEEN(terr,"5","6") AND SUBSTR(stcode,3,1)="0" && For testing, limit call to state borders in the
*: WEST and SOUTH territories.
cMapPoly = "THISFORM.ST"+states.stcode+"()" && Create a string for the method call.
&cMapPoly && Call the method containing the state polygon array.
DIMENSION aNewState[ALEN(THISFORM.aMap,1),2] && Redimension the array used by Graphics Server.
=ACOPY(THISFORM.aMap,aNewState) && Copy the state polygon array data to the GS array.
=GSFixPos(THISFORM.aFixPos[1,1],THISFORM.aFixPos[2,1]) && Fix the XY positions in the GS view.
=GSDataDim(ALEN(aNewState,1),2) && Establish the data dimensions for GS.
=GSDataAmp(ALEN(aNewState,1),2,@aNewState[1,1]) && Send the data to GS.
=GSPolyFill(0,0,0,0,0,6) && Draw a polygon with the array's dimensions.
=GSPolyVec(0,0,0,0,0,0) && Draw a line around the polygon.
DO CASE
CASE stcode = "580" && If the state is US Virgin Islands,
FOR lnSupp = 1 TO 2 && draw supplemental polygons (numerous islands).
cSupp = ALLTRIM(STR(lnSupp,1,0))
cMapPolyPlus = SUBSTR(cMapPoly,1,LEN(cMapPoly)-2)+cSupp+"()"
&cMapPolyPlus
DIMENSION aNewState[ALEN(THISFORM.aMap,1),2]
=ACOPY(THISFORM.aMap,aNewState)
=GSFixPos(THISFORM.aFixPos[1,1],THISFORM.aFixPos[2,1])
=GSDataDim(ALEN(aNewState,1),2)
=GSDataAmp(ALEN(aNewState,1),2,@aNewState[1,1])
=GSPolyFill(0,0,0,0,0,6)
=GSPolyVec(0,0,0,0,0,0)
ENDFOR
CASE stcode = "110" && If the state is Hawaii,
FOR lnSupp = 1 TO 7 && draw supplemental polygons (numerous islands).
cSupp = ALLTRIM(STR(lnSupp,1,0))
cMapPolyPlus = SUBSTR(cMapPoly,1,LEN(cMapPoly)-2)+cSupp+"()"
&cMapPolyPlus
DIMENSION aNewState[ALEN(THISFORM.aMap,1),2]
=ACOPY(THISFORM.aMap,aNewState)
=GSFixPos(THISFORM.aFixPos[1,1],THISFORM.aFixPos[2,1])
=GSDataDim(ALEN(aNewState,1),2)
=GSDataAmp(ALEN(aNewState,1),2,@aNewState[1,1])
=GSPolyFill(0,0,0,0,0,6)
=GSPolyVec(0,0,0,0,0,0)
ENDFOR
ENDCASE
ENDIF
ENDSCAN
THISFORM.BorderAbbv() && Call the method placing state abbreviations on polygons.
ON ERROR && Close the ON ERROR routine.
Next
Reply
View the map of this thread
View the map of this thread starting from this message only
View all messages of this thread
View all messages of this thread starting from this message only