home *** CD-ROM | disk | FTP | other *** search
- FUNC PseudoGet
- ***
- *** PSEUDOGET
- *** (pw_psget)
- ***
- *** Imitates a get/read for one variable; most useful for hotkey functions
- *** that require input while a read is already in effect.
- ***
- *** Syntax: PSEUDOGET( <expN1>, <expN2>, <expC1>, <expC1> )
- *** <expN1-2> Row and column position of field.
- *** <exp1> Current value of field--character, numeric, logical and date
- *** types are all supported.
- *** <expC2> Picture clause; don't use spaces (use Xs instead), unless
- *** you want forced spaces as a result in the returned value.
- ***
- *** Returns: new value of field
- ***
- *** Requires: - GETKEY(), KEYCK()
- ***
- *** Examples: - mvendno = PSEUDOGET(7,28,mvendno,'XXXXXX')
- *** - mcompany = PSEUDOGET(9,28,SPACE(35), ;
- *** 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
- ***
- *** Notes: - Note that this function creates a public variable called
- *** PSEUDOGOT that is used to signal the calling program that a
- *** PSEUDOGET() has been issued. This is primarily to prevent
- *** unwanted reads from occuring.
- ***
- *** As an example:
- *** IF TYPE("PSUEDOGOT")="U" && In the calling program
- *** READ
- *** ELSE
- *** RELEASE PSEUDOGOT
- *** ENDIF
- ***
- PARAMETERS mrow, mcol, mcurval, mpict
- DO CASE
- CASE TYPE('MCURVAL') = 'C'
- mfield = mcurval
- CASE TYPE('MCURVAL') = 'N'
- IF AT('.',mpict) <> 0
- mdec = LEN(mpict)-AT('.',mpict)-1
- ELSE
- mdec = 0
- ENDIF
- mfield = STR(mcurval,LEN(mpict),mdec)
- CASE TYPE('MCURVAL') = 'L'
- IF mpict = 'Y'
- mfield = iif(mcurval,'Y','N')
- ELSE
- mfield = iif(mcurval,'T','F')
- ENDIF
- CASE TYPE('MCURVAL') = 'D'
- mfield = dtoc(mcurval)
- ENDCASE
- * ProWest 6/8/88 WFB 1:removed dependence on var m0ce_rev
- mcolor = setcolor(iif(TYPE('m0ce_rev')='C',m0ce_rev,'N/W,W/N'))
- @ mrow,mcol SAY SPACE(LEN(mpict))
- mpos = 1
- mKey = 1
- DO WHILE mpos > 0 .AND. mpos < LEN(mpict)+1
- @ mrow,mcol SAY mfield
- @ mrow,mcol+mpos-1 SAY ''
- mKey = GetKey(0)
- DO CASE
- CASE mKey = 4
- * right arrow
- mpos = mpos + 1
- LOOP
- CASE mKey = 19
- * left arrow
- mpos = mpos - 1
- LOOP
- CASE mKey = 13 .OR. mKey = 24 .OR. mKey = 5 .OR. mKey = 18 ;
- .OR. mKey = 3 .OR. mKey = 23 .OR. mKey = 27
- * possible exit keys
- EXIT
- CASE mKey = 8
- * backspace
- mpos = mpos - 1
- mfield = stuff(mfield,mpos,1,'')
- mfield = mfield + ' '
- CASE mKey = 7
- * delete
- mfield = stuff(mfield,mpos,1,'')
- mfield = mfield + ' '
- CASE mKey > 31 .AND. mKey < 255
- * everything else
- mfield = stuff(mfield,mpos,1,transform(CHR(mKey),SUBSTR(mpict,mpos,1)))
- mpos = mpos + 1
- OTHERWISE
- LOOP
- ENDCASE
- ENDDO
- SET COLOR TO &mcolor
- @ mrow,mcol SAY mfield
- DO CASE
- CASE TYPE('MCURVAL') = 'C'
- mretval = mfield
- CASE TYPE('MCURVAL') = 'N'
- IF AT('.',mpict) <> 0
- mdec = LEN(mpict)-AT('.',mpict)-1
- ELSE
- mdec = 0
- ENDIF
- mretval = val(mfield)
- CASE TYPE('MCURVAL') = 'L'
- IF mpict = 'Y'
- mretval = iif(mfield='Y',.T.,.F.)
- ELSE
- mretval = iif(mfield='T',.T.,.F.)
- ENDIF
- CASE TYPE('MCURVAL') = 'D'
- mretval = ctod(mfield)
- ENDCASE
- * ProWest 11/8/88 DLW 1:Added PseudoGot variable, see notes in func header
- RELEASE pseudogot
- PUBLIC pseudogot
- RETURN(mretval)
-
- ***** Last Updated WFB 11/8/88 *****
- ***** 122 Lines *****