Files
CGW/CGWFUNC.PRG
Jason Soltys 7905c43278 first commit
2026-07-14 00:41:31 -05:00

117 lines
2.5 KiB
Plaintext

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.