'=========================================================================== ' Subject: INPUT FIELD ROUTINE Date: 12-13-96 (21:00) ' Author: Aaron Clausen Code: QB, QBasic, PDS ' Origin: aaronc@freenet.alberni.net Packet: TEXT.ABC '=========================================================================== ' Here is a quick and dirty input routine that I originally developed for ' entering phone numbers. DECLARE FUNCTION PInput$ (Picture$) DEFINT A-Z ' # number ' ! alpha ' % alpha-numeric ' & uppercase alpha ' * lowercase alpha ' ' All other characters will be seen as literals and will be displayed. ' ' Eg. Phone$ = PInput$("(###) ###-####") ' FUNCTION PInput$ (Picture$) tString$ = "" Length = LEN(Picture$) StartRow = CSRLIN StartCol = POS(0) FOR CharCount = 1 TO Length IF INSTR("#!%&*", MID$(Picture$, CharCount, 1)) THEN tString$ = tString$ + " " PRINT " "; ELSE tString$ = tString$ + MID$(Picture$, CharCount, 1) PRINT MID$(Picture$, CharCount, 1); END IF NEXT CharCount LOCATE StartRow, StartCol, 1 ExitFlag = 0 GetKeyFlag = -1 CharCount = 0 DO IF GetKeyFlag THEN DO HitKey$ = INKEY$ LOOP UNTIL HitKey$ <> "" ELSE GetKeyFlag = -1 END IF KeyVal = ASC(HitKey$) SELECT CASE KeyVal CASE 8 IF CharCount >= 0 AND CharCount <= (Length + 1) THEN IF CharCount > 0 THEN SELECT CASE MID$(Picture$, CharCount, 1) CASE "#", "!", "%", "&", "*" LOCATE CSRLIN, POS(0) - 1 PRINT " "; LOCATE CSRLIN, POS(0) - 1 MID$(tString$, CharCount, 1) = " " CharCount = CharCount - 1 CASE ELSE LOCATE CSRLIN, POS(0) - 1 GetKeyFlag = 0 CharCount = CharCount - 1 END SELECT END IF ELSE END IF CASE 13 ExitFlag = -1 CASE 32 TO 127 CharCount = CharCount + 1 IF CharCount <= Length THEN SELECT CASE MID$(Picture$, CharCount, 1) CASE "#" IF (KeyVal = 45 OR KeyVal = 46) OR (KeyVal >= 48 AND KeyVal <= 57) THEN MID$(tString$, CharCount, 1) = HitKey$ PRINT HitKey$; ELSE CharCount = CharCount - 1 END IF CASE "!" IF (KeyVal >= 65 AND KeyVal <= 90) OR (KeyVal >= 97 AND KeyVal <= 122) THEN MID$(tString$, CharCount, 1) = HitKey$ PRINT HitKey$; ELSE CharCount = CharCount - 1 END IF CASE "%" MID$(tString$, CharCount, 1) = HitKey$ PRINT HitKey$; CASE "&" IF (KeyVal >= 65 AND KeyVal <= 90) OR (KeyVal >= 97 AND KeyVal <= 122) THEN HitKey$ = UCASE$(HitKey$) MID$(tString$, CharCount, 1) = HitKey$ PRINT HitKey$; ELSE CharCount = CharCount - 1 END IF CASE "*" IF (KeyVal >= 65 AND KeyVal <= 90) OR (KeyVal >= 97 AND KeyVal <= 122) THEN HitKey$ = LCASE$(HitKey$) MID$(tString$, CharCount, 1) = HitKey$ PRINT HitKey$; ELSE CharCount = CharCount - 1 END IF CASE ELSE GetKeyFlag = 0 MID$(tString$, CharCount, 1) = MID$(Picture$, CharCount, 1) PRINT MID$(Picture$, CharCount, 1); END SELECT ELSE IF CharCount > Length THEN CharCount = Length END IF END SELECT LOOP UNTIL ExitFlag LOCATE , , 0 PRINT PInput$ = tString$ END FUNCTION