home *** CD-ROM | disk | FTP | other *** search
- /***
- * Gets16.prg
- *
- * Get reader saving changed in cargo
- */
-
- #include "Getexit.ch"
- #include "Inkey.ch"
-
- #command @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- SAVE CHANGED ;
- [<moreClauses,...>] ;
- ;
- => @ <row>, <col> GET <var> ;
- [<clauses>] ;
- SEND cargo := .F. ;
- SEND reader := {|oGet| ;
- GetSaveChanged(oGet) } ;
- [<moreClauses>]
-
- MEMVAR GetList
-
- FUNCTION Gets16
-
- LOCAL cVar1 := Space(10), ;
- cVar2 := Space(12)
-
- CLEAR SCREEN
- @ 10, 10 SAY "Enter cVar1" GET cVar1 SAVE CHANGED
- @ 11, 10 SAY "Enter cVar2" GET cVar2 SAVE CHANGED
-
- READ SAVE
- ? "Get 1 changed", GetList[1]:cargo
- ? "Get 2 changed", GetList[2]:cargo
- InKey(0)
-
- RETURN NIL
-
-
- proc GetSaveChanged( oGet )
-
- // read the GET if the WHEN condition is satisfied
- IF ( GetPreValidate(oGet) )
- // activate the GET for reading
- oGet:SetFocus()
-
- DO WHILE ( oGet:exitState == GE_NOEXIT )
- // check for initial typeout (no editable positions)
- IF ( oGet:typeOut )
- oGet:exitState := GE_ENTER
- ENDIF
-
- // apply keystrokes until exit
- DO WHILE ( oGet:exitState == GE_NOEXIT )
- GetApplyKey(oGet, InKey(0))
- ENDDO
-
- // disallow exit if the VALID condition is not satisfied
- IF ( !GetPostValidate(oGet) )
- oGet:exitState := GE_NOEXIT
- ENDIF
- ENDDO
-
- IF oGet:changed
- oGet:cargo := .T.
- ENDIF
- // de-activate the GET
- oGet:KillFocus()
- ENDIF
-
- RETURN