home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB SETINPT (SCRN%, WID%, EX$, INPT%(), INPT$(), BC%)
- DECLARE SUB SETWIND (FST%, S%, SH%, NOHI%, DEC%, SA%, DFORMAT%)
- DECLARE SUB MULTINPT (SCRN%, FLD%, EXIT$, AEXIT%, RKEY%, RTRN$())
- DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
- DECLARE SUB PRINTW (TEXT$, R%, LC%)
-
- '***************************************************************************
- ' This is an example of using auto-exit fields in MULTINPT to print an ****
- ' instruction line. ****
- '***************************************************************************
- '**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES: ****
- '***************************************************************************
- '**** For QB4.+ unenhanced version use QB4UNEN.QLB ****
- '**** For BASIC 7.+ unenhanced version use PDSUNEN.QLB ****
- '**** For QB4.+ enhanced version use QB4ALL.QLB or QB4NER.QLB ****
- '**** For BASIC 7.0 enhanced version use PDSALL70.QLB or PDSNER70.QLB ****
- '**** For BASIC 7.1 enhanced version use PDSALL71.QLB or PDSNER71.QLB ****
- '**** Load QB or QBX with the /L option using the correct library ****
- '***************************************************************************
-
- CALL SETWIND(1, 1, 7, 0, 1, 1, 1) ' INITIALIZE WINDOW MEMORY
- COLOR 7, 0: CLS ' BLANK THE SCREEN
- DIM RTRN$(4) ' FOR THE FOUR FIELDS
- DIM I AS STRING * 76
- '---------------------------------------------------------------------------
- ' SETINPT MUST BE CALLED FOR EACH MULTI-FIELD INPUT SCREEN
-
- REDIM INPT%(25), INPT$(4)
- FLD% = 1: B% = 1
- DO
- READ INPT%(B%)
- IF INPT%(B%) = 9999 THEN EXIT DO
- B% = B% + 1
- FOR X% = 1 TO 5
- READ INPT%(B%)
- B% = B% + 1
- NEXT
- READ INPT$(FLD%)
- FLD% = FLD% + 1
- LOOP
-
- ' Auto-exit ( always ) - auto advance - numeric with no decimal places
- DATA 11000,5,5,4,15,99,""
- ' Auto-exit ( always ) - auto advance - numeric with no decimal places
- DATA 11000,7,5,4,15,99,""
- ' Protected - numeric with no decimal places
- DATA 100,9,5,5,15,99,""
- ' Auto-exit ( always ) - Alpha / numeric
- DATA 10007,11,5,15,15,99,""
- DATA 9999
-
- CALL SETINPT(1, 80, "E", INPT%(), INPT$(), 0) ' SET UP MULTI-INPUT AND
- ERASE INPT%, INPT$ ' GET THE MEMORY BACK.
-
- '----------------------------------------------------------------------------
- ' THE MAIN PROGRAM
-
- ' program
- ' program
-
- GOSUB AUTOEXITEXAMPLE
-
- ' program
- ' program
-
- END
-
- '---------------------------------------------------------------------------
- ' MULTI-FIELD SUB-ROUTINE
-
- AUTOEXITEXAMPLE:
-
- FLD% = 1: AUTOEXIT% = 0: EXIT$ = "" ' START IN FIELD 1. PRINT ALL
- ' FIELDS.
- '----------------------------------------------------------------------------
- ' MAKE A WINDOW. PRINT INSTRUCTIONS
-
- CALL MAKEWIND(1, "@Auto-exit fields used print an instruction line", 1, 1, 80, 16, 112, 102)
- CALL PRINTW("Auto-exit and auto advance with numeric input", 2, 15)
- CALL PRINTW("+", 3, 5)
- CALL PRINTW("Auto-exit and auto advance with numeric input", 4, 15)
- CALL PRINTW("Protected Field", 6, 15)
- CALL PRINTW("Alpha-numeric", 8, 24)
- CALL PRINTW("Press ESC to end demonstration", 10, 100)
- CALL NEWCOLOR(15)
- '----------------------------------------------------------------------------
- PREINPT:
- SELECT CASE FLD% ' WHICH FIELD?
- CASE 1
- I = "Input the first number." ' INSTRUCTIONS
- CASE 2
- I = "Input the second number." ' "
- CASE 4
- I = "Input anything!" ' "
- END SELECT
- I = "INSTRUCTION FOR FIELD" + STR$(FLD%) + ": " + I
- CALL PRINTW(I, 12, 2)
-
- CALL MULTINPT(1, FLD%, EXIT$, AUTOEXIT%, RKEY%, RTRN$())
-
- ' FIRST CHECK TO SEE IF THE EXIT WAS DUE TO FIELD 1 OR 2 BEING EXITED,
- ' EITHER BY THE AUTO-EXIT FEATURE OR BY THE "F1" KEY.
- ' ON EXIT AUTOEXIT% POINTS TO THE FIELD THE CURSOR WAS ON WHEN MULTINPT
- ' WAS EXITED ( IF IT WAS AN AUTOEXIT FIELD. ). ON EXIT FLD% POINTS TO
- ' THE FIELD THE CURSOR IS MOVING INTO.
- ' THE CALL TO MULTINPT IN THE "IF - END IF" BLOCK IS USED TO UPDATE
- ' FIELD 3 ONLY.
-
- IF AUTOEXIT% = 1 OR AUTOEXIT% = 2 THEN ' FIELD 1 OR 2. UPDATE
- RTRN$(3) = STR$(VAL(RTRN$(1)) + VAL(RTRN$(2))) ' THE PROTECTED FIELD.
- IF RTRN$(1) = "" AND RTRN$(2) = "" THEN RTRN$(3) = ""
- CALL MULTINPT(1, FLD%, "VIEW", 3, RKEY%, RTRN$()) ' UPDATE FIELD 3 ONLY.
- END IF
-
- IF EXIT$ = "AUTO" GOTO PREINPT ' WAS NOT "F1". ONLY ONE
- ' FIELD WILL UPDATE AS
- ' AUTOEXIT% CAN NOT EQUAL 0.
- ' UPON EXIT OF MULTINPT FLD%
- ' IS SET TO NEXT FIELD NUMBER
- ' FOR THE CURSOR.
-
- RETURN ' PROGRAM WILL ALWAYS COMES HERE IF ESC
- ' IS PRESSED AS EXIT$ = "ESC"
-
-
-