ID: Q88328
2.00 2.5x 2.60 2.60a | 2.5x 2.60 2.60a 3.00 | 2.5x 2.60a
MS-DOS | WINDOWS | MACINTOSH
The information in this article applies to:
The following sample program demonstrates the various types of READ statements.
*:********************************************************************* *:
*: Program: BRREAD.PRG
*:
*: System: FoxPro 2.0 READ example
*: Copyright (c) 1991, Microsoft Corporation
*:
*: Procs & Fncts: INITWIN1
*: : CLEARSCR
*: : UDF1()
*: : UDF2()
*: : UDF3()
*: : UDF5()
*: : UDF6()
*: : UDF7()
*: : UDF4()
*:
*: Calls: INITWIN1 (procedure in BRREAD.PRG)
*: : CLEARSCR (procedure in BRREAD.PRG)
*: : UDF1() (function in BRREAD.PRG)
*: : UDF2() (function in BRREAD.PRG)
*: : UDF3() (function in BRREAD.PRG)
*: : UDF5() (function in BRREAD.PRG)
*: : UDF6() (function in BRREAD.PRG)
*: : UDF7() (function in BRREAD.PRG)
*:
*: Documented 04/08/91 at 19:54 FoxDoc version 2.0
*:*********************************************************************
SET COLOR OF SCHEME 1 TO W+/B
CLEAR
CLEAR ALL
@ 4,4 SAY 'Loading BRREAD.PRG please wait...'
CLOSE ALL
SET ESCA ON
SET CURSOR OFF
SET STAT OFF
SET MESSAGE TO " Hit ESCAPE to Continue"
PUBLIC get1, get2, get3, get4
SET COLOR OF SCHEME 1 TO W+/BG string='FoxPro 2.0 READ examples' @ 0,0 SAY SPACE(80) @ 0,(80-LEN(string))/2 SAY string
DEFINE WINDOW xcommand FROM 20,2 TO 22,77;
COLOR W+/R,W+/R,W+/R,W+/R,W+/R TITLE ' Example of Command: '
DEFINE WINDOW win1 FROM 2,4 TO 14,36 COLOR W+/BR,N/W,W+/BR,GR+/BR,W/BR;
TITLE ' Window One '
DEFINE WINDOW win2 FROM 2,44 TO 14,76 COLOR W+/BR,N/W,W+/BR,GR+/BR,W/BR;
TITLE ' Window Two '
***************************************************************************
* Simple READ CYCLE in one window. *
***************************************************************************
ACTIVATE WINDOW xcommand @ 0,1 SAY 'READ CYCLE COLOR ,w+/b'
DO initwin1 @ 2,2 SAY 'This is GET #1:' GET get1 @ 3,2 SAY 'This is GET #2:' GET get2 @ 4,2 SAY 'This is GET #3:' GET get3 @ 5,2 SAY 'This is GET #4:' GET get4
SET CURSOR ON READ cycle COLOR ,W+/B SET CURSOR OFF DO clearscr
***************************************************************************
* READ CYCLE OBJECT in one window. *
***************************************************************************
ACTIVATE WINDOW xcommand
CLEAR
@ 0,1 SAY 'READ CYCLE COLOR ,w+/b OBJECT 3'
DO initwin1 @ 2,2 SAY 'This is GET #1:' GET get1 @ 3,2 SAY 'This is GET #2:' GET get2 @ 4,2 SAY 'This is GET #3:' GET get3 @ 5,2 SAY 'This is GET #4:' GET get4
SET CURSOR ON READ cycle COLOR ,W+/B object 3 SET CURSOR OFF DO clearscr
***************************************************************************
* READ CYCLE OBJECT with radio buttons. *
***************************************************************************
ACTIVATE WINDOW xcommand
CLEAR
@ 0,1 SAY 'READ CYCLE COLOR ,w+/b OBJECT 7 (with radio buttons)'
DEFINE WINDOW win1 FROM 2,4 TO 14,76 COLOR W+/BR,N/W,W+/BR,GR+/BR,W/BR;
TITLE ' Window One '
DO initwin1
@ 2,2 SAY 'This is GET #1:' GET get1
@ 3,2 SAY 'This is GET #2:' GET get2
@ 4,2 SAY 'This is GET #3:' GET get3
@ 5,2 SAY 'This is GET #4:' GET get4
STORE 1 TO choice @ 2,42 GET choice FUNCTION '*R Ford;Chevy;Pontiac;Toyota';
COLOR ,,,,,W+/B,,,W+/BR
SET CURSOR ON
READ cycle COLOR ,W+/B object 7
SET CURSOR OFF
DO clearscr
***************************************************************************
* READ CYCLE spanning 2 windows. *
***************************************************************************
ACTIVATE WINDOW xcommand
CLEAR
@ 0,1 SAY 'READ CYCLE COLOR ,w+/b (spanning 2 windows)'
DEFINE WINDOW win1 FROM 2,4 TO 14,36 COLOR W+/BR,N/W,W+/BR,GR+/BR,W/BR;
TITLE ' Window One '
DO initwin1
@ 2,2 SAY 'This is GET #1:' GET get1
@ 3,2 SAY 'This is GET #2:' GET get2
ACTIVATE WINDOW win2
@ 2,2 SAY 'This is GET #3:' GET get3
@ 3,2 SAY 'This is GET #4:' GET get4
SET CURSOR ON READ cycle COLOR ,W+/B SET CURSOR OFF DO clearscr
***************************************************************************
* ACTIVATE clause on READ CYCLE spanning 2 windows. *
***************************************************************************
DEFINE WINDOW win1 FROM 2,4 TO 10,36 COLOR W+/BR,N/W,W+/BR,GR+/BR,W/BR;
TITLE ' Window One '
DEFINE WINDOW win2 FROM 2,44 TO 10,76 COLOR W+/BR,N/W,W+/BR,GR+/BR,W/BR;
TITLE ' Window Two '
ACTIVATE WINDOW xcommand
CLEAR
@ 0,1 SAY 'READ CYCLE COLOR ,w+/b ACTIVATE UDF1()'
DO initwin1 @ 2,2 SAY 'This is GET #1:' GET get1 @ 3,2 SAY 'This is GET #2:' GET get2 ACTIVATE WINDOW win2 @ 2,2 SAY 'This is GET #3:' GET get3 @ 3,2 SAY 'This is GET #4:' GET get4
SET CURSOR ON READ cycle COLOR ,W+/B ACTIVATE udf1() SET CURSOR OFF DO clearscr
***************************************************************************
* DEACTIVATE clause on READ CYCLE spanning 2 windows. *
***************************************************************************
ACTIVATE WINDOW xcommand
CLEAR
@ 0,1 SAY 'READ CYCLE COLOR ,w+/b DEACTIVATE UDF2()'
ACTIVATE WINDOW win2 CLEAR
DO initwin1 @ 2,2 SAY 'This is GET #1:' GET get1 @ 3,2 SAY 'This is GET #2:' GET get2 ACTIVATE WINDOW win2 @ 2,2 SAY 'This is GET #3:' GET get3 @ 3,2 SAY 'This is GET #4:' GET get4 SET CURSOR ON READ cycle COLOR ,W+/B DEACTIVATE udf2() SET CURSOR OFF DO clearscr
***************************************************************************
* READ CYCLE VALID spanning 2 windows. *
***************************************************************************
ACTIVATE WINDOW xcommand CLEAR @ 0,1 SAY 'READ CYCLE COLOR ,w+/b VALID UDF3()'
ACTIVATE WINDOW win2 CLEAR
DO initwin1 @ 2,2 SAY 'This is GET #1:' GET get1 @ 3,2 SAY 'This is GET #2:' GET get2 @ 4,2 SAY 'RDLEVEL() = ' + LTRIM(STR(rdlevel())) ACTIVATE WINDOW win2 @ 2,2 SAY 'This is GET #3:' GET get3 @ 3,2 SAY 'This is GET #4:' GET get4 @ 4,2 SAY 'RDLEVEL() = ' + LTRIM(STR(rdlevel()))
SET CURSOR ON READ cycle COLOR ,W+/B VALID udf3() SET CURSOR OFF DO clearscr
***************************************************************************
* READ CYCLE WHEN spanning 2 windows. *
***************************************************************************
ACTIVATE WINDOW xcommand CLEAR @ 0,1 SAY 'READ CYCLE COLOR ,w+/b WHEN UDF5()'
ACTIVATE WINDOW win2 CLEAR
DO initwin1 @ 2,2 SAY 'This is GET #1:' GET get1 @ 3,2 SAY 'This is GET #2:' GET get2 @ 4,2 SAY 'RDLEVEL() = ' + LTRIM(STR(rdlevel())) ACTIVATE WINDOW win2 @ 2,2 SAY 'This is GET #3:' GET get3 @ 3,2 SAY 'This is GET #4:' GET get4 @ 4,2 SAY 'RDLEVEL() = ' + LTRIM(STR(rdlevel()))
SET CURSOR ON READ cycle COLOR ,W+/B WHEN udf5() SET CURSOR OFF DO clearscr
***************************************************************************
* READ CYCLE SHOW (refreshing SAYs).. *
***************************************************************************
STORE SPACE(10) TO get1, get2, get3, get4 DEFINE WINDOW win1 FROM 2,0 TO 10,24 COLOR W+/BR,N/W,W+/BR,GR+/BR,W/BR;
TITLE ' Window One '
DEFINE WINDOW win2 FROM 2,26 TO 24,79 COLOR W+/BG,N/W,W+/BG,GR+/BG,W+/BG;
TITLE ' Source Code '
DEFINE WINDOW xcommand FROM 15,0 TO 20,24;
COLOR W+/R,W+/R,W+/R,W+/R,W+/R TITLE 'Example of Command: '
ACTIVATE WINDOW xcommand
CLEAR
@ 1,3 SAY 'READ CYCLE SHOW'
@ 2,2 SAY '(with SAY refresh)'
mamount1=0 mamount2=0 mtotal =0
ACTIVATE WINDOW win2 TEXT
mAMOUNT1=0
mAMOUNT2=0
mTOTAL =0
strAMOUNT1="Amount 1:"
strAMOUNT2="Amount 2:"
set echo off
set talk off
@ 2,2 say strAMOUNT1 get mAMOUNT1 valid UDF6()
@ 3,2 say strAMOUNT2 get mAMOUNT2 valid UDF6()
@ 4,2 say ' Total: '+ str(mTOTAL)
read cycle show UDF7()
return
func UDF6
Wait window "in valid of read"
mTOTAL=mAMOUNT1+mAMOUNT2
show gets
return .t.
func UDF7
@ 4,12 say str(mTOTAL)
return .t.
ENDTEXT
ACTIVATE WINDOW win1 set echo off set talk off
strAMOUNT1="Amount 1:" strAMOUNT2="Amount 2:"
@ 2,2 SAY strAMOUNT1 GET mamount1 VALID udf6() @ 3,2 SAY strAMOUNT2 GET mamount2 VALID udf6()
@ 4,2 SAY ' Total: '+ STR(mtotal)
SET CURSOR ON
READ cycle show udf7()
SET CURSOR OFF
ACTIVATE SCREEN SET COLOR OF SCHEME 1 TO W+/B CLEAR CLEAR ALL CLOSE ALL SET MESSAGE TO RETURN
*** EOP: BRREAD.PRG
*!********************************************************************* *!
*! Function: UDF1()
*!
*! Called by: BRREAD.PRG
*!
*!*********************************************************************
FUNC udf1
DEFI WINDOW win3 FROM 14,2 TO 18,77;
COLOR W+/BG,W+/BG,W+/BG,W+/BG,W+/BG;
TITLE ' From the FoxPro 2.0 Docs: ';
footer ' Press any key to continue... '
ACTIVATE WINDOW win3
@ 0,1 SAY 'The ACTIVATE clause is executed when READ is issued or whenever'
@ 1,1 SAY 'the current READ window changes. ACTIVATE may be viewed as a'
@ 2,1 SAY 'window level WHEN clause'
=INKEY(0)
RELEASE WINDOW win3
RETURN .T.
*!********************************************************************* *!
*! Function: UDF2()
*!
*! Called by: BRREAD.PRG
*!
*!*********************************************************************
FUNC udf2
DEFI WINDOW win3 FROM 14,2 TO 18,77;
COLOR W+/BG,W+/BG,W+/BG,W+/BG,W+/BG;
TITLE ' From the FoxPro 2.0 Docs: ';
footer ' Press any key to continue... '
ACTIVATE WINDOW win3
@ 0,1 SAY 'The DEACTIVATE clause is executed whenever you attempt to bring'
@ 1,1 SAY 'forward (activate) another READ window. DEACTIVATE may be'
@ 2,1 SAY 'viewed as a window level VALID clause'
=INKEY(0)
RELEASE WINDOW win3
RETURN .T.
*!********************************************************************* *!
*! Function: UDF3()
*!
*! Called by: BRREAD.PRG
*!
*! Calls: UDF4() (function in BRREAD.PRG)
*!
*!*********************************************************************
FUNC udf3
DEFI WINDOW win3 FROM 14,2 TO 18,77;
COLOR W+/BG,W+/B,W+/BG,W+/BG,W+/BG;
TITLE ' Alert! '
ACTIVATE WINDOW win3
X='N'
@ 2,1 SAY 'Exit this READ? (Y/N):' GET X PICT '!'
SET CURSOR ON READ WHEN udf4() SET CURSOR OFF
RELEASE WINDOW win3 IF X = 'Y'
RETURN .T.
ELSE
RETURN .F.
ENDIF
*!********************************************************************* *!
*! Function: UDF4()
*!
*! Called by: UDF3() (function in BRREAD.PRG)
*! : UDF5() (function in BRREAD.PRG)
*!
*!*********************************************************************
FUNC udf4
@ 0,1 SAY 'RDLEVEL() = ' + LTRIM(STR(rdlevel()))
RETURN .T.
*!********************************************************************* *!
*! Function: UDF5()
*!
*! Called by: BRREAD.PRG
*!
*! Calls: UDF4() (function in BRREAD.PRG)
*!
*!*********************************************************************
FUNC udf5
DEFI WINDOW win3 FROM 14,2 TO 18,77;
COLOR W+/BG,W+/B,W+/BG,W+/BG,W+/BG;
TITLE ' Alert! '
ACTIVATE WINDOW win3
X='Y'
@ 0,1 SAY 'RDLEVEL() = ' + LTRIM(STR(rdlevel()))
@ 2,1 SAY 'Enter this READ? (Y/N):' GET X PICT '!'
SET CURSOR ON READ WHEN udf4() SET CURSOR OFF
RELEASE WINDOW win3 IF X = 'Y'
RETURN .T.
ELSE
RETURN .F.
ENDIF
*!********************************************************************* *!
*! Function: UDF6()
*!
*! Called by: BRREAD.PRG
*!
*!*********************************************************************
FUNC udf6
mtotal=mamount1+mamount2 SHOW GETS RETURN .T.
*!********************************************************************* *!
*! Function: UDF7()
*!
*! Called by: BRREAD.PRG
*!
*!*********************************************************************
FUNC udf7
@ 4,12 SAY STR(mtotal)
RETURN .T.
*!********************************************************************* *!
*! Procedure: CLEARSCR
*!
*! Called by: BRREAD.PRG
*!
*!*********************************************************************
PROC clearscr
SET COLOR OF SCHEME 1 TO W+/B
@ 1,0 CLEAR
RETURN
*!********************************************************************* *!
*! Procedure: INITWIN1
*!
*! Called by: BRREAD.PRG
*!
*!*********************************************************************
PROC initwin1
STORE SPACE(10) TO get1, get2, get3, get4
ACTIVATE WINDOW win1
CLEAR
RETURN
*: EOF: BRREAD.PRG
Additional reference words: FoxDos VFoxWin FoxWin FoxMac 2.00 2.50 2.50a 2.50b 3.00 2.50c 2.60 2.60a KBCategory: KBSubcategory: FxprgRead
Keywords : kbcode FxprgRead
Version : 2.00 2.5x 2.60 2.60a | 2.5x 2.60
Platform : MACINTOSH MS-DOS WINDOWS
Last Reviewed: May 22, 1998