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

  1. /***
  2. * Gets18.prg
  3. */
  4.  
  5. // NOTE valid and when clause must not refer to fields directly - must use
  6. // GetActive():varGet() or {|o| o:varGet() .... }
  7.  
  8. /***
  9. * GET - Edit a field in variable
  10. *
  11. */
  12.  
  13. #include "Getexit.ch"
  14. #include "Inkey.ch"
  15.  
  16. // Offsets into cargo
  17. #define FLD_VAL    1
  18. #define FLD_GSB    2
  19.  
  20. #command @ <row>, <col> GET <var>                                      ;
  21.                         [<clauses,...>]                                ;
  22.                         TO VAR                                         ;
  23.                         [<moreClauses,...>]                            ;
  24.                                                                        ;
  25.       => @ <row>, <col> GET <var>                                      ;
  26.                         [<clauses>]                                    ;
  27.                         SEND cargo  := {Eval(FieldBlock(<(var)>)),     ;
  28.                                         FieldBlock(<(var)>)}           ;
  29.                         SEND block := CargoGsb(Atail(GetList))         ;
  30.                         [<moreClauses>]
  31.  
  32. MEMVAR GetList
  33.  
  34. FUNCTION Gets18
  35.  
  36. FIELD Lname, Fname IN test
  37.  
  38.   CLEAR SCREEN
  39.   USE test SHARED
  40.  
  41.   @ 10, 10 SAY "Enter cVar1" GET Lname TO VAR
  42.   @ 11, 10 SAY "Enter cVar2" GET Fname TO VAR
  43.   READ SAVE
  44.   IF Updated() .AND. LastKey() != K_ESC
  45.     IF Rlock()
  46.       UpdateFields(GetList)
  47.     ENDIF
  48.   ENDIF
  49.   GetList := {}
  50.  
  51. RETURN NIL
  52.  
  53.  
  54. FUNCTION UpdateFields(aGets)
  55.  
  56. LOCAL i
  57. LOCAL nGets := Len(aGets)
  58.  
  59.   FOR i := 1 TO nGets
  60.     Eval(aGets[i]:Cargo[FLD_GSB], aGets[i]:cargo[FLD_VAL])
  61.   NEXT
  62.  
  63. RETURN NIL
  64.  
  65.  
  66. FUNCTION CargoGsb(oGet)
  67.  
  68. RETURN {|x| iif(x == NIL, ;
  69.                 oGet:cargo[FLD_VAL], ;
  70.                 oGet:cargo[FLD_VAL] := x) }
  71.