FUNCTION SAVEGETS // PRESERVE ALL THE GETS GENERATED LOCAL SAVELIST SAVELIST := ACLONE(GETLIST) RETURN SAVELIST *************************** FUNCTION RESTGETS(SAVELIST, ACTIVE_ELEM) // RESTORE ALL THE SAVED GETS // AND SET THE FOCUS ON ACTIVE ELEM LOCAL L GETLIST := ACLONE(SAVELIST) IF ACTIVE_ELEM = NIL ELSE IF ACTIVE_ELEM > 0 .AND. ACTIVE_ELEM <= LEN(GETLIST) FOR L = 1 TO LEN(GETLIST) IF L = ACTIVE_ELEM GETLIST[L]:SETFOCUS() ELSE GETLIST[L]:KILLFOCUS() // TERMINATE THE GET IF ACTIVE ENDIF NEXT ENDIF ENDIF RETURN GETLIST *************************** FUNCTION FIND_GETELEM(VAR_NAME) // GET THE ELEMENT FOR VAR_NAME IN THE GETLIST LOCAL ELEM ELEM = ASCAN(GETLIST, {|XX| XX[7] == VAR_NAME}) RETURN ELEM *************************** FUNCTION ACTIVE_GET // GET THE ELEMENT FOR THE ACTIVE GET IN THE GETLIST LOCAL ELEM, X, SEARCH_VAL, MSUBSCRIPT X := GETACTIVE() // GET CURRENT ACTIVE GET IF EMPTY(X) // NOT IN A READ! RETURN 0 ENDIF MSUBSCRIPT = X:SUBSCRIPT SEARCH_VAL = X[7] // VARIABLE NAME TO SEARCH FOR IN GETLIST IF EMPTY(MSUBSCRIPT) ELEM = ASCAN(GETLIST, {|XX| XX[7] == SEARCH_VAL}) ELSE SS1 = MSUBSCRIPT[1] SS2 = MSUBSCRIPT[2] ELEM = ASCAN(GETLIST, {|XX| (XX[7] == SEARCH_VAL .AND. SS1==XX[2,1] .AND. SS2==XX[2,2]) }) ENDIF RETURN ELEM ******************************************************** FUNCTION UPDATE_GETS(MARR) // UPDATE THE GET INFO ON THE SCREEN LOCAL SAVESEL := SELECT(), EVALVAL LOCAL NCOLOR, NPOS, VAR, VALU LOCAL ELEM, SEARCH_VAR ELEM = ACTIVE_GET() // GET ELEMENT OF ACTIVE GET IN THE GETLIST IF ELEM > 0 GETLIST[ELEM]:KILLFOCUS() // TERMINATE THE CURRENT GET FOR L = 1 TO LEN(MARR) VAR = TRIM(MARR[L,1]) SEARCH_VAR = VAR IF LEN(MARR[L]) = 2 SEARCH_VAR = TRIM(MARR[L,2]) ENDIF VALU = &VAR // READMODAL WILL ONLY DISPLAY() CHARACTER VALUES! DO CASE CASE VALTYPE(VALU) = 'N' VALU = STR(VALU) CASE VALTYPE(VALU) = 'D' VALU = DTOC(VALU) ENDCASE ELEM = ASCAN(GETVARS, {|X| TRIM(X[3]) == SEARCH_VAR}) IF ELEM > 0 .AND. !EMPTY(GETLIST[ELEM]:BUFFER) GETLIST[ELEM]:SETFOCUS() // MUST SET FOCUS TO DO THE FOLLOWING NCOLOR = GETLIST[ELEM]:COLORSPEC() // GET THE CURRENT COLORS GETLIST[ELEM]:BUFFER = VALU // STUFF THE BUFFER GETLIST[ELEM]:ASSIGN() // UPDATE THE GET VAR GETLIST[ELEM]:DISPLAY() // PUT VALUE ON THE SCREEN (DUMPS BUFFER) GETLIST[ELEM]:KILLFOCUS() // TERMINATE THE GET ENDIF NEXT ENDIF SELECT(SAVESEL) RETURN .T.