home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a054 / 1.img / GETPRGS.EXE / GETS16.PRG < prev    next >
Encoding:
Text File  |  1992-03-09  |  2.0 KB  |  73 lines

  1. /***
  2. * Gets16.prg
  3. *
  4. * Get reader saving changed in cargo
  5. */
  6.  
  7. #include "Getexit.ch"
  8. #include "Inkey.ch"
  9.  
  10. #command @ <row>, <col> GET <var>                                      ;
  11.                         [<clauses,...>]                                ;
  12.                         SAVE CHANGED                                   ;
  13.                         [<moreClauses,...>]                            ;
  14.                                                                        ;
  15.       => @ <row>, <col> GET <var>                                      ;
  16.                         [<clauses>]                                    ;
  17.                         SEND cargo := .F.                              ;
  18.                         SEND reader := {|oGet|                         ;
  19.                                         GetSaveChanged(oGet) }         ;
  20.                         [<moreClauses>]
  21.  
  22. MEMVAR GetList
  23.  
  24. FUNCTION Gets16
  25.  
  26. LOCAL cVar1 := Space(10), ;
  27.       cVar2 := Space(12)
  28.  
  29.   CLEAR SCREEN
  30.   @ 10, 10 SAY "Enter cVar1" GET cVar1 SAVE CHANGED
  31.   @ 11, 10 SAY "Enter cVar2" GET cVar2 SAVE CHANGED
  32.  
  33.   READ SAVE
  34.   ? "Get 1 changed", GetList[1]:cargo
  35.   ? "Get 2 changed", GetList[2]:cargo
  36.   InKey(0)
  37.  
  38. RETURN NIL
  39.  
  40.  
  41. proc GetSaveChanged( oGet )
  42.  
  43.   // read the GET if the WHEN condition is satisfied
  44.   IF ( GetPreValidate(oGet) )
  45.     // activate the GET for reading
  46.     oGet:SetFocus()
  47.  
  48.     DO WHILE ( oGet:exitState == GE_NOEXIT )
  49.       // check for initial typeout (no editable positions)
  50.       IF ( oGet:typeOut )
  51.         oGet:exitState := GE_ENTER
  52.       ENDIF
  53.  
  54.       // apply keystrokes until exit
  55.       DO WHILE ( oGet:exitState == GE_NOEXIT )
  56.         GetApplyKey(oGet, InKey(0))
  57.       ENDDO
  58.  
  59.       // disallow exit if the VALID condition is not satisfied
  60.       IF ( !GetPostValidate(oGet) )
  61.         oGet:exitState := GE_NOEXIT
  62.       ENDIF
  63.     ENDDO
  64.  
  65.     IF oGet:changed
  66.       oGet:cargo := .T.
  67.     ENDIF
  68.     // de-activate the GET
  69.     oGet:KillFocus()
  70.   ENDIF
  71.  
  72. RETURN
  73.