'=========================================================================== ' Subject: MAX INPUT ROUTINES Date: 12-07-97 (21:05) ' Author: John Charles Bull III Code: QB, QBasic, PDS ' Origin: vividbarrier@hotmail.com Packet: TEXT.ABC '=========================================================================== DECLARE SUB MAXinput2 (z$, xa!, xb!, max!, co1!, co2!, co3!, old!) DECLARE SUB MAXinput (z$, xa%, xb%, max%, co1%) ' /........................\ Vivid Barrier Software 1997 ' |.oO..oOo.oOo..vivid.....| QBasic 4.5x Useful SUB Procedures ' |.oO.oOo..oOo....barrier.| by John Charles Bull III ' |.oO.oOo..oOOOOo..=O97O=.| ' |.oOoOo...oOo.oOo........| http://pages.prodigy.net/wyzel/ ' |.oOOo....oOOOOo.........|  ' \......................../ Phantom's Land RPG (made in 100% QBasic 4.5x) ' ' MAXinput and MAXinput2 will limit the input to a certain number of ' characters. ' ' MAXinput(TextReturn$,XPos,YPos,Max -1, TextColor) ' MAXinput2(TextReturn$,XPos,YPos,Max,FColor,BGColor,CursorColor,PrintOld) ' ' TextReturn$ - String to store text into (to not include SPACEBAR ' in input make the value * before you CALL the SUB) ' (The * can only be used in MAXinput not 2) ' XPos - Across position to start input ' YPos - Down position to start input ' Max - Maximum input length (the actual number is less than ' the one you type in MAXinput but not 2) ' TextColor - Color of the text ' FColor - Foreground text color ' BGColor - Background text color ' CursorColor - Block Cursor Color ' PrintOld - If equal to 1 then print the old value of TextReturn$ CLS 'clear the screen z1$ = "*" 'turn spaces off CALL MAXinput(z1$, 1, 1, 9, 9) 'limit input to 8 characters CALL MAXinput(z2$, 1, 1, 50, 9) 'limit input to 50 characters CALL MAXinput2(z3$, 5, 1, 25, 9, 1, 7, 0) 'limit to 25, use MAXinput2 COLOR 9, 0 ' change color to 9,0 PRINT z1$ ' PRINT z2$ ' Print INPUTs for the helluvit PRINT z3$ ' REM $DYNAMIC DEFINT A-Z SUB MAXinput (z$, xa, xb, max, co1) no = 0 IF z$ = "*" THEN no = 1 z$ = "" a = xa b = xb COLOR co1 DO z = z + 1 z$ = z$ + " " LOOP UNTIL z = max - 1 LOCATE xa, xb: PRINT z$; s1: IF LEN(b$) = max - 1 THEN LOCATE xa, xb: PRINT b$; ELSE LOCATE xa, xb: PRINT b$ + "-"; END IF a$ = b$ b$ = b$ + INKEY$ IF b$ = a$ THEN GOTO s1 dork$ = RIGHT$(b$, 1) IF dork$ = " " AND no = 1 THEN D = LEN(b$) b$ = LEFT$(b$, D - 1) END IF D = LEN(b$) b = b + 1 c = LEN(b$) c = c - 1 dork$ = RIGHT$(b$, 1) IF dork$ = CHR$(8) THEN GOSUB takeoff IF dork$ = CHR$(13) THEN GOTO ender IF D = max THEN b$ = LEFT$(b$, c) IF b$ = CHR$(8) THEN b$ = "" IF LEN(b$) = max - 1 THEN LOCATE xa, xb: PRINT b$; ELSE LOCATE xa, xb: PRINT b$ + "-"; END IF GOTO s1 takeoff: c = LEN(b$) IF c = 1 OR c = 0 THEN RETURN c = c - 2 b$ = LEFT$(b$, c) LOCATE xa, xb: PRINT z$; LOCATE xa, xb: PRINT b$; RETURN ender: c = LEN(b$) c = c - 1 z$ = LEFT$(b$, c) END SUB DEFSNG A-Z SUB MAXinput2 (z$, xa, xb, max, co1, co2, co3, old) ' this will clear the area for the input to take place DO LOCATE xa, xb + a: COLOR co1, co2: PRINT " "; a = a + 1 LOOP UNTIL a = max 'if they picked old = 1 then it will print the old string if any IF old = 1 THEN LOCATE xa, xb IF LEN(z$) >= max THEN PRINT LEFT$(z$, max); ELSE PRINT z$; END IF END IF 'print the cursor D = SCREEN(xa, xb, 0): COLOR co1, co3: LOCATE xa, xb: PRINT CHR$(D); a = 0 'cursor position relative to starting point (xa,xb) mi1: z$ = INKEY$ IF z$ = "" THEN GOTO mi1 IF z$ = CHR$(0) + "M" THEN GOTO inright IF z$ = CHR$(0) + "K" THEN GOTO inleft IF z$ = CHR$(8) THEN GOTO backspace IF z$ = CHR$(13) THEN GOTO mi2 IF ASC(z$) = 31 OR ASC(z$) <= 31 OR ASC(z$) = 127 OR ASC(z$) >= 127 THEN GOTO mi1 'repair were cursor is and print new character COLOR co1, co2: LOCATE xa, xb + a: PRINT z$; IF a + 1 = max THEN ELSE a = a + 1 END IF D = SCREEN(xa, xb + a, 0): COLOR co1, co3: LOCATE xa, xb + a: PRINT CHR$(D); GOTO mi1 backspace: IF a = 0 THEN GOTO mi1 D = SCREEN(xa, xb + a, 0): COLOR co1, co2: LOCATE xa, xb + a: PRINT CHR$(D); a = a - 1 D = SCREEN(xa, xb + a, 0): COLOR co1, co3: LOCATE xa, xb + a: PRINT " "; GOTO mi1 inleft: IF a = 0 THEN GOTO mi1 D = SCREEN(xa, xb + a, 0): COLOR co1, co2: LOCATE xa, xb + a: PRINT CHR$(D); a = a - 1 D = SCREEN(xa, xb + a, 0): COLOR co1, co3: LOCATE xa, xb + a: PRINT CHR$(D); GOTO mi1 inright: IF a + 1 = max THEN GOTO mi1 D = SCREEN(xa, xb + a, 0): COLOR co1, co2: LOCATE xa, xb + a: PRINT CHR$(D); a = a + 1 D = SCREEN(xa, xb + a, 0): COLOR co1, co3: LOCATE xa, xb + a: PRINT CHR$(D); GOTO mi1 mi2: 'save input into a variable a = 0 DO D = SCREEN(xa, xb + a, 0) z$ = z$ + CHR$(D) a = a + 1 LOOP UNTIL a = max z = LEN(z$) z$ = RIGHT$(z$, z - 1) END SUB