home *** CD-ROM | disk | FTP | other *** search
- ********************************************************************************
- * JBKEY.PRG
- * Author : John A. Bristor
- * Program Purpose : Wait for Keystroke and Take appropriate Action
- ********************************************************************************
- STORE " " TO JBEXIT,JBFLAG
- STORE SPACE(1) TO JBSYMBOL
- STORE 999 TO JBT,JBL
- STORE " DEC " TO JBTYPE
- DO WHILE JBEXIT <> "X"
- SET COLOR TO W*/N
- @ JABTOP+1,JABLEFT+25 SAY "F1"
- SET COLOR TO N/W
- @ JABTOP+2,JABLEFT+12 SAY JBTYPE
- SET COLOR TO W/N
- IF JBANGLE = "DEG"
- @ JABTOP+1,JABLEFT+2 SAY "DEG"
- SET COLOR TO N/W
- @ JABTOP+1,JABLEFT+5 SAY "/Rad"
- SET COLOR TO W/N
- ELSE
- SET COLOR TO N/W
- @ JABTOP+1,JABLEFT+2 SAY "Deg/"
- SET COLOR TO W/N
- @ JABTOP+1,JABLEFT+6 SAY "RAD"
- ENDIF
- IF JBMEM1 <> " "
- SET COLOR TO N/W
- @ JABTOP+3,JABLEFT+3 SAY "M"
- SET COLOR TO W/N
- ELSE
- @ JABTOP+3,JABLEFT+3 SAY " "
- ENDIF
- INKEY(0) && WAIT FOR KEYSTROKE
- SET COLOR TO W/N
- @ JABTOP+3,JABLEFT+2 SAY " "
- IF JBFLAGGER = .F.
- @ JABTOP+3,JABLEFT+27 SAY JBOPER
- ELSE
- STORE .F. TO JBFLAGGER
- ENDIF
- IF JBOPER$'='
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- ENDIF
- DO CASE
- CASE LASTKEY() = 37
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,13,"%"
- CASE LASTKEY() = 77 .OR. LASTKEY() = 109
- DO JBREDO WITH JBSYMBOL,JBT,JBL
- @ JABTOP+13,JABLEFT+13 SAY "M"
- STORE JBCURR TO JBMEM1
- STORE "M" TO JBSYMBOL
- STORE 13 TO JBT
- STORE 13 TO JBL
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 82 .OR. LASTKEY() = 114
- DO JBREDO WITH JBSYMBOL,JBT,JBL
- @ JABTOP+16,JABLEFT+13 SAY "R"
- STORE JBMEM1 TO JBCURR
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- STORE "R" TO JBSYMBOL
- STORE 16 TO JBT
- STORE 13 TO JBL
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 42
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,25,"*"
- CASE LASTKEY() = 43
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,25,"+"
- CASE LASTKEY() = 45
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,25,"-"
- CASE LASTKEY() = 46
- IF AT('.',JBCURR) = 0
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,19,"."
- ELSE
- IF JBOPER = " "
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,19,"."
- ENDIF
- STORE .T. TO JBFLAGGER
- ENDIF
- CASE LASTKEY() = 47
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,25,"/"
- CASE LASTKEY() = 94
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,25,"^"
- CASE LASTKEY() = 48
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,16,"0"
- CASE LASTKEY() = 49
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,16,"1"
- CASE LASTKEY() = 50
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,19,"2"
- CASE LASTKEY() = 51
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,22,"3"
- CASE LASTKEY() = 52
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,16,"4"
- CASE LASTKEY() = 53
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,19,"5"
- CASE LASTKEY() = 54
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,22,"6"
- CASE LASTKEY() = 55
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,16,"7"
- CASE LASTKEY() = 56
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,19,"8"
- CASE LASTKEY() = 57
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,22,"9"
- CASE LASTKEY() = 8 && BACKSPACE
- call ascroll with chr(2),chr(1),chr(15),chr(JABTOP+3),chr(JABLEFT+5),chr(JABTOP+3),chr(JABLEFT+24)
- STORE IF(LEN(JBCURR) > 1,SUBSTR(JBCURR,1,(LEN(JBCURR)-1)),"0") TO JBCURR
- IF JBCURR = "0"
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- ENDIF
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 61
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,22,"="
- CASE LASTKEY() = -1
- DO JBREDO WITH JBSYMBOL,JBT,JBL
- @ JABTOP+5,JABLEFT+15 SAY "F2"
- STORE " " TO JBMEM1
- STORE "F2" TO JBSYMBOL
- STORE 5 TO JBT
- STORE 15 TO JBL
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = -2
- DO JBREDO WITH JBSYMBOL,JBT,JBL
- @ JABTOP+7,JABLEFT+3 SAY "ARC"
- STORE "Arc" TO JBSYMBOL
- STORE 7 TO JBT
- STORE 3 TO JBL
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = -3
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,07,08,"Log"
- CASE LASTKEY() = -4
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,03,"Sin"
- CASE LASTKEY() = -5
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,10,08,"Exp"
- CASE LASTKEY() = -6
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,03,"Cos"
- CASE LASTKEY() = -7
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,13,08," π "
- CASE LASTKEY() = -8
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,03,"Tan"
- CASE LASTKEY() = -9
- DO JBDOIT WITH JBSYMBOL,JBT,JBL,16,08," √x"
- CASE LASTKEY() = 9 .OR. LASTKEY() = 271 && tab key or shift tab
- DO JBREDO WITH JBSYMBOL,JBT,JBL
- @ JABTOP+7,JABLEFT+13 SAY ""
- STORE "0" TO JBCURR,JBCURRA
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- STORE "" TO JBSYMBOL
- STORE " " TO JBOPER
- SET COLOR TO W/N
- @ JABTOP+3,JABLEFT+27 SAY JBOPER
- STORE 7 TO JBT
- STORE 13 TO JBL
- CASE LASTKEY() = 78 .OR. LASTKEY() = 110 && N,n '±' N,n NEGATE
- DO CASE
- CASE VAL(JBCURR) = 0
- CASE VAL(JBCURR) < 0
- STORE SUBSTR(JBCURR,2) TO JBCURR
- CASE VAL(JBCURR) > 0
- STORE "-"+JBCURR TO JBCURR
- ENDCASE
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 88 .OR. LASTKEY() = 120 && X,x '1/x' INVERSE
- IF VAL(JBCURR)=0
- SET COLOR TO N*/W
- @ JABTOP+3,JABLEFT+2 SAY "E"
- SET COLOR TO W/N
- STORE "0" TO JBCURR,JBCURRA
- ELSE
- STORE JBCURR TO JBCURRA
- STORE 1/VAL(JBCURR) TO JBCURR
- DO JBRIP0 WITH JBCURR
- ENDIF
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 19 && LEFT ARROW
- IF JBANGLE <> "DEG"
- STORE (VAL(JBCURR) * 57.2958) TO JBCURR
- DO JBRIP0 WITH JBCURR
- STORE "DEG" TO JBANGLE
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- ENDIF
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 4 && RIGHT ARROW
- IF JBANGLE <> "RAD"
- STORE (VAL(JBCURR) * 0.017453) TO JBCURR
- DO JBRIP0 WITH JBCURR
- STORE "RAD" TO JBANGLE
- @ JABTOP+3,JABLEFT+5 SAY SPACE(20-LEN(JBCURR))+JBCURR+" "
- ENDIF
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 5
- DO CASE
- CASE JBTYPE = " DEC "
- STORE " HEX " TO JBTYPE
- CASE JBTYPE = " HEX "
- STORE " OCT " TO JBTYPE
- CASE JBTYPE = " OCT "
- STORE " BIN " TO JBTYPE
- CASE JBTYPE = " BIN "
- STORE " DEC " TO JBTYPE
- OTHERWISE
- STORE " DEC " TO JBTYPE
- ENDCASE
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 24 && DOWN ARROW
- DO CASE
- CASE JBTYPE = " DEC "
- STORE " BIN " TO JBTYPE
- CASE JBTYPE = " BIN "
- STORE " OCT " TO JBTYPE
- CASE JBTYPE = " OCT "
- STORE " HEX " TO JBTYPE
- CASE JBTYPE = " HEX "
- STORE " DEC " TO JBTYPE
- OTHERWISE
- STORE " DEC " TO JBTYPE
- ENDCASE
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 28 && && ? HELP 63
- DO JBHELP
- STORE .T. TO JBFLAGGER
- CASE LASTKEY() = 13 && CARRIAGE RETURN
- STORE "X" TO JBEXIT && Return New Date
- STORE VAL(JBCURR) TO JABRESULT
- CASE LASTKEY() = 27 && ESCAPE KEY
- STORE "X" TO JBEXIT && Returns Original
- OTHERWISE
- STORE .T. TO JBFLAGGER
- ENDCASE
- SET COLOR TO N/W
- ENDDO
- RETURN