home *** CD-ROM | disk | FTP | other *** search
- ********************
-
- FUNCTION Pushscreen
-
- PARAMETERS _push1, _push2, _push3, _push4, _pushsave, _pushscr, ;
- _pushbord, _pushshad
-
-
- * This is the first function/procedure that is used
- * to draw a screen and push the screen stack. The screen
- * stack is stored in the array "allscrens", the color stack
- * is stored in the array "allcolor", and the window
- * logic is housed in the "allwindows" array. The stack
- * counter is housed in the "scr_level" variable.
- *
- * The return value is the
-
- IF TYPE("allscreens") != "A"
- PUBLIC allscreens[20], scr_level, allcolor[20], allwindows[20]
- scr_level = 2
- AFILL(allscreens, "")
- AFILL(allcolor, "")
- AFILL(allwindows, "")
- ENDIF
-
- IF EMPTY(PCOUNT()) && No Parameters!
- _push1 = 0
- _push2 = 0
- _push3 = 24
- _push4 = 79
- _pushsave = .T.
- _pushscr = .F.
- _pushbord = .F.
- _pushshad = .F.
-
- ELSEIF PCOUNT() = 4 && 4 parameters means No border, No Frame, Just save the area
- _pushsave = .T.
- _pushscr = .T.
- _pushbord = .F.
- _pushshad = .F.
-
- ELSEIF PCOUNT() = 5 && 5 parameters mean Save area without border logic
- _pushscr = .T.
- _pushbord = .F.
- _pushshad = .F.
-
- ELSEIF PCOUNT() = 6
- _pushbord = .T.
- _pushshad = .F.
-
- ELSEIF PCOUNT() = 7
- _pushshad = .F.
-
- ENDIF
-
- IF _pushsave
- allscreens[scr_level] = ""
- IF _pushshad
- allscreens[scr_level] = SAVESCREEN(_push1, _push2, _push3 + 1, _push4 + 2)
- ELSE
- allscreens[scr_level] = SAVESCREEN(_push1, _push2, _push3, _push4)
- ENDIF
- allcolor[scr_level] = SETCOLOR()
- IF _pushshad
- allwindows[scr_level] = TRANSFORM(_push1, "99") + "/" + TRANSFORM(_push2, "99") + "/" + TRANSFORM(_push3+1, "99") + "/" + TRANSFORM(_push4+2, "99") + "/.T."
- ELSE
- allwindows[scr_level] = TRANSFORM(_push1, "99") + "/" + TRANSFORM(_push2, "99") + "/" + TRANSFORM(_push3, "99") + "/" + TRANSFORM(_push4, "99") + "/.F."
- ENDIF
- scr_level = IF(scr_level = 20, scr_level, scr_level + 1)
- ENDIF
-
- IF _pushbord && Yes, I want a border!
- IF !_pushscr && No, I Just want a frame, hold the filling
- IF TYPE("scrframe") = "U" && If not using SCREEN.SYS file for this
- @ _push1, _push2 TO _push3, _push4 DOUBLE
- ELSE
- @ _push1, _push2, _push3, _push4 BOX SUBSTR(scrframe, 1, 8)
- ENDIF
- ELSE
- IF TYPE("scrframe") = "U"
- @ _push1, _push2 CLEAR TO _push3, _push4
- @ _push1, _push2 TO _push3, _push4 DOUBLE
- ELSE
- @ _push1, _push2, _push3, _push4 BOX scrframe
- ENDIF
- ENDIF
- IF _pushshad
- SHADOW(_push1, _push2, _push3, _push4, 1)
- ENDIF
- ENDIF
-
- RETURN(scr_level-1)
-
- * End of File