home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windoware
/
WINDOWARE_1_6.iso
/
source
/
pwez41
/
multsam1.bas
< prev
next >
Wrap
BASIC Source File
|
1991-02-01
|
5KB
|
129 lines
DECLARE SUB SETINPT (SCRN%, WID%, EX$, INPT%(), INPT$(), BC%)
DECLARE SUB SETWIND (FST%, S%, SH%, NOHI%, DEC%, SA%)
DECLARE SUB MULTINPT (SCRN%, FLD%, EXIT$, AEXIT%, RTRN$())
DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
DECLARE SUB PRINTW (TEXT$, R%, LC%)
'***************************************************************************
' This is an example of using a field in MULTINPT as a FIXED CHOICE ****
' field. Field two provides the choices of BASIC, PASCAL, OR ASSEMBLY. ****
'***************************************************************************
'**** 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) ' INITIALIZE WINDOW MEMORY
COLOR 7, 0: CLS ' BLANK THE SCREEN
DIM RTRN$(3) ' FOR THE THREE FIELDS
'---------------------------------------------------------------------------
' SETINPT MUST BE CALLED FOR EACH MULTI-FIELD INPUT SCREEN
REDIM INPT%(19), INPT$(3)
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
' Alpha / numeric
DATA 7,5,5,30,15,99,""
' Fixed choice - alpha / numeric
DATA 30007,7,5,9,15,99,""
' Alpha / nuneric
DATA 7,9,5,30,15,99,""
DATA 9999
CALL SETINPT(1, 80, "12", INPT%(), INPT$(), 0)
ERASE INPT%, INPT$
'----------------------------------------------------------------------------
' THE MAIN PROGRAM
' program
' program
GOSUB FIXEDEXAMPLE
' program
' program
END
'---------------------------------------------------------------------------
' MULTI-FIELD SUB-ROUTINE
FIXEDEXAMPLE:
FLD% = 1: AUTOEXIT% = 0: EXIT$ = "" ' START IN FIELD 1. PRINT ALL
' FIELDS.
'----------------------------------------------------------------------------
' MAKE A WINDOW. PRINT INSTRUCTIONS
CALL MAKEWIND(1, "@Fixed Choice Demonstration - Second field has three choices", 1, 1, 80, 12, 112, 102)
CALL PRINTW("Any alpha/numeric input", 2, 38)
CALL PRINTW("SPACE BAR changes field - cusror movement keys exit field", 4, 15)
CALL PRINTW("Any alpha/numeric input", 6, 38)
CALL PRINTW("Press F1 to end demonstration", 8, 100)
'----------------------------------------------------------------------------
' INITIALIZES DATA FOR FIELD 2. PROGRAM ONLY DOES THIS ON FIRST CALL TO
' CALL THE MULTI-INPUT SCREEN AS MULTPASS% IS SET TO 1 AFTER FIRST PASS.
' IF THIS MULT-FIELD INPUT SCREEN IS CALLED AGAIN THE PROGRAM WILL
' "REMEMBER" WHAT WAS IN FIELD 2 AND WILL NOT RESET IT TO "BASIC"
IF MULTPASS% = 0 THEN
DIM CHOICE$(3)
CHOICE$(1) = "BASIC" ' CHOICES FOR FIXED FIELD 2.
CHOICE$(2) = "PASCAL" ' " "
CHOICE$(3) = "ASSEMBLY" ' " "
LANGCHOICE% = 1 ' MAKE IT "BASIC" FOR FIRST PASS
MULTPASS% = 1
END IF
' ---------------------------------------------------------------------------
PREINPT:
RTRN$(2) = CHOICE$(LANGCHOICE%) ' RESET FIELD 2
CALL MULTINPT(1, FLD%, EXIT$, AUTOEXIT%, RTRN$())
' FIRST CHECK TO SEE IF THE EXIT WAS DUE TO FIELD 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 TO.
' NOTE: A FIXED CHOICE FIELD FIELD IS ALWAYS AN AUTOEXIT FIELD. BY
' CHECKING TO SEE IF EXIT$ = "FIXED" IT IS DETERMINED IF THE SPACE
' BAR EXITED THE FIELD. IF EXIT$ = "AUTO" IT WAS A CURSOR MOVEMENT KEY
' ( FROM FIELD TWO ) WHICH CAUSED THE EXIT. IT IS NECESSARY TO CHECK
' FOR THIS OR THE PROGRAM WILL END EVERY TIME FIELD TWO IS EXITED.
IF AUTOEXIT% = 2 THEN ' IS IT FIELD 2 ?
IF EXIT$ = "FIXED" THEN ' WAS IT THE SPACE BAR ?
LANGCHOICE% = LANGCHOICE% + 1
IF LANGCHOICE% = 4 THEN LANGCHOICE% = 1
GOTO PREINPT
ELSEIF EXIT$ = "AUTO" THEN ' WAS IT A CURSOR MOVEMENT KEY ?
GOTO PREINPT
END IF
END IF
RETURN ' PROGRAM WILL ALWAYS COMES HERE IF "F1"
' IS PRESSED AS EXIT$ = "F1". (EVEN WHEN
' AUTOEXIT% = 2).