home *** CD-ROM | disk | FTP | other *** search
- '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- '!!!!!!!!!!!! ** [ THIS ] ** !!!!!!!! ** [ READ THIS ] !!!!!!!!!!!!!!!
- '! BASIC MODULE, DEMPART2.BAS MUST BE LOADED WITH THIS MODULE !
- '***************************************************************************
- '**** THIS PROGRAM MUST BE USED WITH ONE OF THE FOLLOWING LIBRARIES: ****
- '***************************************************************************
- '**** For QB4.5 unenhanced version use QBUNEN.QLB ****
- '**** For BASIC 7.1 unenhanced version use PDSUNEN.QLB ****
- '**** For VBDOS 1.0 unenhanced version use VBUNEN.QLB ****
- '**** For QB4.50 enhanced version use QBALL.QLB or QBNE.QLB ****
- '**** For BASIC 7.1 enhanced version use PDSALL.QLB or PDSNE.QLB ****
- '**** For VBDOS 1.0 enhanced version use VBALL.QLB or VBNE.QLB ****
- '**** Load QB, QBX, or VBDOS with the /L option and the correct library ****
- '***************************************************************************
- '----------------------------------------------------------------------------
- '---------------------- Windows R-E-Z Demonstration -------------------------
- '---------------------- CONNECT Software ------------------------------------
- '---------------------- Jun. 01, 1993 ---------------------------------------
- '----------------------------------------------------------------------------
- '---------------------- Copyright 1988,1989,1990,1991,1992,1993 -------------
- '---------------------- By: CONNECT Software --------------------------------
- '---------------------- All rights reserved ---------------------------------
- '----------------------------------------------------------------------------
- ' **** VER 6.10 ------- LAST UPDATE ------- 06/01/1993 ****
- '****************************************************************************
- DECLARE SUB B4INPT (INPTEXIT$, RESTRICT$)
- DECLARE SUB B4SCRL (EXIT$, mark$, TAGCOL%, NOREFRESH%)
- DECLARE SUB BOXW (TR%, LC%, WD%, NR%, BORDER%)
- DECLARE FUNCTION CHOICEBAR% (Choice$(), TR%, LC%, WD%, ATTR%, HATTR%, EXIT$)
- DECLARE FUNCTION CHOICEWIND% (TITLE$, TX$(), CH$(), TR%, LC%, ATTR%, HCOL%, ESCEXIT%, BORDER%)
- DECLARE SUB CHNGPULL (BAR%, WIND%, ATTR%)
- DECLARE SUB CHNGWIND (W%)
- DECLARE SUB CLEARKB ()
- DECLARE SUB CLRWIND ()
- DECLARE SUB CUROFF ()
- DECLARE SUB DELWIND (W%)
- DECLARE SUB DISKSIZE (DISK%, DISKSZE&, FREESPACE&)
- DECLARE SUB DOSOUND ()
- DECLARE FUNCTION EXEPATH$ ()
- DECLARE FUNCTION FINDPATH$ ()
- DECLARE SUB FINDDIR (PATH$, TYPE$, F%)
- DECLARE SUB GETANS (TEXT$, Choice$, ANS$, TR%, LC%, WATTR%, FATTR%, BORDER%)
- DECLARE FUNCTION GETCUR& ()
- DECLARE FUNCTION GETDISK% ()
- DECLARE SUB INFOFIXED (FIXED$)
- DECLARE SUB INFOLINE (TR%, LC%, WD%, ATTR%)
- DECLARE SUB INPTINIT (DTYPE%, ISDOT%, STARTAT1%, NOBLANK%, SND%)
- DECLARE SUB INPTWIND (PROMPT$, CODE$, TR%, LC%, WD%, WATTR%, FATTR%, RTRN$, RK%, BUT%, BRD%)
- DECLARE FUNCTION GETAKEY% ()
- DECLARE FUNCTION LBUTTON% ()
- DECLARE SUB LINEW (ROW%, TYP%)
- DECLARE SUB MAKEFIELD (SCRN%, FLD%, SCODE%, STR%, SLC%, SWD%, SBASEATTR%, SACTATTR%, MATTR%, RES$, EXTO$, HOT%, CURPOS%, BRACKET%)
- DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
- DECLARE FUNCTION MARKED% (RTRN$, START%)
- DECLARE FUNCTION MOUSECOL% ()
- DECLARE SUB MOUSEINIT ()
- DECLARE FUNCTION MOUSEINMULT% (MULTSCRN%)
- DECLARE FUNCTION MOUSEINWIND% (WIND%)
- DECLARE SUB MOUSELIMITS (TROW%, BROW%, LCOL%, RCOL%)
- DECLARE FUNCTION MOUSEON% (ONFLAF%)
- DECLARE SUB MOUSEPOS (ROW%, COL%)
- DECLARE FUNCTION MOUSEROW% ()
- DECLARE SUB MOUSESHOW ()
- DECLARE SUB MULTINPT (SCRN%, TOFLD%, OPT$, FROMFLD%, RKEY%, RTRN$(), SELFLD%)
- DECLARE SUB NEWCOLOR (ATTR%)
- DECLARE FUNCTION ONMENUITEM% ()
- DECLARE FUNCTION PEEKASM& (S&, O&, BYVAL N%)
- DECLARE SUB PRINTINFO (I$)
- DECLARE SUB PRINTMENUBAR (ATTR%)
- DECLARE SUB PRINTW (TEXT$, TR%, LC%)
- DECLARE SUB PRINTWHOT (TEXT$, TR%, LC%, HOTCHAR%, ATTR%)
- DECLARE SUB PULLDOWN (INFO$(), A%, B%, EXIT$, RKEY%, ATTR%, HATTR%, BORDER%)
- DECLARE FUNCTION RBUTTON% ()
- DECLARE SUB RESAVE ()
- DECLARE SUB RSTRINFO (DELFLAG%)
- DECLARE SUB RSTRINPT (DELFLAG%)
- DECLARE SUB RSTRPULL (RSTRMBAR%)
- DECLARE SUB RSTRWIND (W%, DELFLAG%)
- DECLARE SUB SAVEWIND (W%, TR%, LC%, WD%, NR%)
- DECLARE SUB SCRLWIND (LIST$(), INFO$(), TOPLINE$, ENTRIES%, RTRN$, RTRN%, LI%, FC%, RKEY%, HIATTR%, SCROLLBAR%, BUT%)
- DECLARE SUB SETCUR (C&)
- DECLARE SUB SETDISK (DRIVE%, BADFLAG%)
- DECLARE SUB SETINPT (SCRN%, DISPLAYLEN%, EXIT$, HOTCOL%)
- DECLARE SUB SETPULL (TR%, LC%, WD%, PWIND$())
- DECLARE SUB SETWIND (FAST%, SND%, SHADCOL%, NOHIGH%, BRACKETATTR%)
- DECLARE FUNCTION TWOPOWEROF& (NUMBER%)
- DECLARE SUB UPDATEFIELD (SCRN%, FLD%, TEXT$)
- DECLARE FUNCTION WAVAIL% (W%)
- DECLARE SUB WINDSTATUS ()
- DECLARE FUNCTION WTIMER& ()
- DECLARE FUNCTION WVAL& (NUMBER$)
-
- '***************************************************************************
- DECLARE SUB MULTSETUP (SCRN%)
- DECLARE SUB CHOICEDEMO ()
- DECLARE SUB SOUNDDEMO (WIND%)
- DECLARE SUB COLORDEMO (WIND%)
- DECLARE SUB PRINTDEMO ()
- DECLARE SUB INPUTWINDOWDEMO ()
- DECLARE SUB MULTINPUTDEMO2 ()
- DECLARE SUB MULTINPUTDEMO1 ()
- DECLARE SUB SETDATEDEMO ()
- DECLARE SUB SCROLLDEMO (W%)
- DECLARE SUB WINDOWDEMO ()
- DECLARE SUB GETANSDEMO ()
- DECLARE FUNCTION COL% (C%)
- DECLARE FUNCTION RELEASED% (SCRN%, TOFLD%)
- DECLARE FUNCTION NEWSEL% (MAXSEL%, sel%, RK%, MSEL%, R$)
- DECLARE SUB CONTROLBOX ()
- DECLARE SUB GETFILE (P$, F$, RKEY%)
-
-
-
- DIM SHARED DEMOATTR%, DFORMAT%, COLCHOICE%, LOCHOICE%
- DIM SHARED SHADCOL%, DEMOFAST%, DEMOSOUND%, DEMONOHI%
- '--------------------------- DIMENSION ARRAYS -------------------------------
-
- DIM SHARED DUMMY$(0 TO 0) ' NEEDED BY SCRLWIND ROUTINE
-
- DIM SHARED MRTRN$(19) ' FOR MULTI-FIELD INPUT DEMO
- DIM SHARED COLCHOICE$(4), LOCHOICE$(4) ' " "
-
- MRTRN$(18) = "< F1=Exit >"
- MRTRN$(19) = "< F10=Help >"
- MRTRN$(5) = "RED" ' # 1 MULTI-FIELD INPUT SCREEN
- MRTRN$(6) = "NORTH" ' "
- COLCHOICE$(1) = "RED" ' "
- COLCHOICE$(2) = "PURPLE" ' "
- COLCHOICE$(3) = "YELLOW" ' "
- COLCHOICE$(4) = "GREEN" ' "
- LOCHOICE$(1) = "NORTH" ' "
- LOCHOICE$(2) = "SOUTH" ' "
- LOCHOICE$(3) = "EAST" ' "
- LOCHOICE$(4) = "WEST" ' "
- COLCHOICE% = 1: LOCHOICE% = 1 ' "
-
- DIM LAN$(3), DISK$(4), Order$(16) ' FOR ORDER FORM
-
- LAN$(1) = "QuickBASIC 4.5" ' "
- LAN$(2) = "BASIC 7.1 - PDS" ' "
- LAN$(3) = "VBDOS 1.0"
- LAN% = 1: Order$(10) = LAN$(1) ' "
-
- DISK$(1) = "5.25 inch - 1.2M" ' "
- DISK$(2) = "5.25 inch - 360K" ' "
- DISK$(3) = "3.5 inch - 1.4M" ' "
- DISK$(4) = "3.5 inch - 720K" ' "
- DSIZE% = 1: Order$(11) = DISK$(1) ' "
- Order$(15) = "< F1=Exit >": Order$(16) = "< F10=Print >"
-
- '------ ARRAY REPRESENTING ALLOWABLE DATE FORMATS FOR INPUT ROUTINES --------
-
- DIM SHARED DATETYPE$(6)
- DATETYPE$(1) = "mm-dd-yyyy"
- DATETYPE$(2) = "mm/dd/yyyy"
- DATETYPE$(3) = "dd-mm-yyyy"
- DATETYPE$(4) = "dd/mm/yyyy"
- DATETYPE$(5) = "dd.mm.yyyy"
- DATETYPE$(6) = "yyyy-mm-dd"
- CLS
-
- CALL CUROFF
-
- 'ON KEY(6) GOSUB TEST ' USE TO TEST TRAPPING
- 'KEY(6) ON
- '----------------------------------------------------------------------------
- SETWIND 1, 1, 1, 0, 0
- '--------------------- SET DATA FOR SCROLL WINDOW DEMO ----------------------
- DIM SHARED Scroll$(1 TO 14) ' READ DATA FOR SCROLL WINDOW DEMO
-
- 'DATA FOR SCROLL WINDOW DEMO
-
- Scroll$(1) = "This is a sample of a scroll window."
- Scroll$(2) = "The A@RROW keys or different colored"
- Scroll$(3) = "letter can be pressed to make a sel-"
- Scroll$(4) = "ection. REGULAR scroll windows exit"
- Scroll$(5) = "when ENTER is pressed. AUTO-EXIT"
- Scroll$(6) = "scroll windows exit if the letter"
- Scroll$(7) = "pressed is found. END / HOME / PGUP"
- Scroll$(8) = "and PGDN keys respond as ex@pected."
- Scroll$(9) = "MARK scroll windows mark or unmark"
- Scroll$(10) = "items in the window with the + "
- Scroll$(11) = "or - k@eys. The SPACE BAR marks"
- Scroll$(12) = "or unmarks all selections. Press"
- Scroll$(13) = "the ESC to return to the pulldown"
- Scroll$(14) = "men@u."
-
- '-------------- SET DATA FOR VIRTUAL SCROLL WINDOW DEMO ---------------------
-
- DIM SHARED ADDRESS$(1 TO 10)
-
- 'DATA FOR VIRTUAL SCROLL WINDOW DEMO
- ADDRESS$(1) = "CONNECT Software 6192 Fawn Meadow Farmington NY 14425"
- ADDRESS$(2) = "Dell Computer Corp 9505 Arboretum Blvd Austin TX 78759"
- ADDRESS$(3) = "Micro Warehouse 1690 Oak St Lakewood NJ 08701"
- ADDRESS$(4) = "ZEOS 530 Fifth Ave NW St Paul MN 55112"
- ADDRESS$(5) = "Microsoft Press 21919 20th Ave SE Bothell WA 95041"
- ADDRESS$(6) = "Central Point Software Greenbrier Pkwy Oregon OR 97006"
- ADDRESS$(7) = "Eastman Kodak Corp 343 State St Rochester NY 14650"
- ADDRESS$(8) = "National Instruments 6504 Bridge Pt Pkwy Austin TX 73730"
- ADDRESS$(9) = "Gateway Computers 610 Gateway Dr N Souix City SD 57049"
- ADDRESS$(10) = "Microsoft Corporation One Microsoft Way Redmond VA 98052"
-
- '-------------------- SET DATA FOR PULLDOWN WINDOWS -----------------------
-
- B% = 34
- REDIM PWIND$(B%)
-
- 'PULLDOWN WINDOW #1
-
- PWIND$(1) = "Windows " ' Menubar
- PWIND$(2) = " Scroll - Get Answer and more" ' Infoline for Menubar
-
- PWIND$(3) = "Window Management System (F1)" ' WINDOW #1 SELECTION
- PWIND$(4) = "Get answer windows (F2)"
- PWIND$(5) = "Scroll windows "
- PWIND$(6) = "-"
- PWIND$(7) = "Ex@it"
- PWIND$(8) = "***" ' End of PULLDOWN WINDOW 1
-
- 'PULLDOWN WINDOW #2
-
- PWIND$(9) = "Set-up " ' Menubar
- ' Infoline for Menubar
- PWIND$(10) = " Set global parameters for WINDOW, INPUT, and SCROLL routines."
- PWIND$(11) = "Control panel" ' WINDOW # 2 SELECTION
- PWIND$(12) = "***" ' End of PULLDOWN WINDOW 2
-
- 'PULLDOWN WINDOW #3
-
- PWIND$(13) = "Input " ' Menubar
- PWIND$(14) = " Single and Multi-field Input" ' Infoline for Menubar
- PWIND$(15) = "Multi-field input" ' WINDOW # 3 SELECTIONS"
- PWIND$(16) = "Look familiar?"
- PWIND$(17) = "Input windows"
- PWIND$(18) = "Choice windows"
- PWIND$(19) = "***" ' End of PULLDOWN WINDOW 3
-
- 'PULLDOWN WINDOW #4
-
- PWIND$(20) = "Directory " ' Menubar
- PWIND$(21) = " Several Features" ' Infoline for Menubar
- PWIND$(22) = "Directory routines" ' WINDOW # 4 SELECTION
- PWIND$(23) = "***" ' End of PULLDOWN WINDOW 4
-
- 'PULLDOWN WINDOW #6
-
- PWIND$(24) = "Color " ' Menubar
- PWIND$(25) = " Set for color, monochrome, or LCD displays" ' Menubar Infoline
- PWIND$(26) = " Black and white" ' WINDOW # 5 SELECTIONS
- PWIND$(27) = "Color"
- PWIND$(28) = "No hi-intensity (B/W)"
- PWIND$(29) = "***" ' End of PULLDOWN WINDOW 5
-
-
- 'PULLDOWN WINDOW #6
-
- PWIND$(30) = "Order Me"
- PWIND$(31) = " *** Important!!! ***" ' Infoline for Menubar
- PWIND$(32) = "Order Me" ' WINDOW # 6 SELECTION
- PWIND$(33) = "***" ' End of PULLDOWN WINDOW 6
-
- PWIND$(34) = "ENDPULL" 'END OF PULLDOWN WINDOWS
-
- SETPULL 2, 8, 60, PWIND$() ' SET UP PULLDOWN WINDOWS
-
- ERASE PWIND$ ' ERASE TEMPORARY ARRAY HOLD-
- ' ING PULLDOWN WINDOW DATA.
-
- '------------- SET DATA FOR INFO-LINE FOR PULLDOWN WINDOWS ------------------
- ' ** NOTE: THIS IS NOT REQUIRED IF INFO-LINE IS NOT USED
-
- DIM PULLINFO$(15) ' INFO-LINE DATA
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #1 SELECTIONS
- 'NOTE: PWIND$(4) IS OMITTED AS IT REPRESENTS THE PULLDOWN WINDOW
- ' SEGMENTING LINE
-
- PULLINFO$(1) = "Make, save and restore windows."
- PULLINFO$(2) = "Get a single key user response."
- PULLINFO$(3) = "Several types of scroll windows."
- PULLINFO$(5) = "End demonstration."
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #2 SELECTION
-
- PULLINFO$(6) = " Set user preferences.."
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #3 SELECTIONS
- PULLINFO$(7) = "Sample multi-field input screen."
- PULLINFO$(8) = "Multi-field versatility."
- PULLINFO$(9) = "Variations of single field input windows."
- PULLINFO$(10) = "It's your choice !!!"
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #4 SELECTION
- PULLINFO$(11) = "Several useful directory routines."
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #5 SELECTIONS
- PULLINFO$(12) = "Set for monochrome displays."
- PULLINFO$(13) = "Set for color displays."
- PULLINFO$(14) = "Set for displays (LCD) without hi-intensity."
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #6 SELECTION
- PULLINFO$(15) = "Make an order form for WINDOWS R-E-Z....."
-
- DIM SHARED SUBSCROLL$(5)
- SUBSCROLL$(1) = "Regular Scroll window"
- SUBSCROLL$(2) = "Auto-exit Scroll window"
- SUBSCROLL$(3) = "Mark Scroll window"
- SUBSCROLL$(4) = "Virtual Scroll window"
- SUBSCROLL$(5) = "List virtual scroll window"
-
-
- CALL INPTINIT(1, 1, 0, 1, 1)
-
- '---------------- SET UP MULTI-FIELD INPUT SCREENS -------------------------
- FOR FLD% = 1 TO 4
- CALL MULTSETUP(FLD%)
- NEXT
-
- '------------------------- WINDOW, MOUSE INITIALIZATION --------------------
- DEMOATTR% = 112: SHADCOL% = 7: DEMONOHI% = 0
- MOUSE.DETECTED% = MOUSEON%(1)
-
- REDIM TEXT$(6)
- TEXT$(1) = ""
- TEXT$(2) = "@QuickBASIC 4.5 / BASIC 7+ / Visual Basic for DOS User's Interface"
- TEXT$(3) = "@Copyright 1988 - 1993 by:"
- TEXT$(4) = "@CONNECT Software"
- TEXT$(5) = "@All rights reserved"
- TEXT$(6) = ""
- REDIM Choice$(3)
- Choice$(1) = "Color": Choice$(2) = "Monochrome": Choice$(3) = "LCD (B/W)"
-
- SELECT CASE CHOICEWIND%("@WINDOWS R-E-Z -- VERSION 6.10", TEXT$(), Choice$(), 100, 100, 112, 7, 0, 111)
- CASE 1 ' COLOR
- CHNGPULL 5, 2, 120
- DEMOATTR% = 0
- SHADCOL% = 8
- CASE 2 ' MONOCHROME
- CHNGPULL 5, 1, 112
- CASE 3
- CHNGPULL 5, 3, 112 ' NO-HIGH intensity
- DEMONOHI% = 1
- END SELECT
- SETWIND 1, 1, SHADCOL%, DEMONOHI%, 15
- RSTRWIND 2, 1
- CALL CUROFF
- DEMOFAST% = 1
- DEMOSOUND% = 1
- DATETYPE$ = "mm-dd-yyyy" ' REPRESENTS DATE FORMAT #1
- DFORMAT% = 1 ' DATE FORMAT #1 = mm-dd-yyyy
-
- '----------------------------- INTRODUCTION SCREEN --------------------------
-
- PREINTRO:
- IF SHADCOL% = 7 THEN A% = 112 ELSE A% = 116
-
- MAKEWIND 0, "@WINDOWS R-E-Z Version 6.10 --- 06/01/1996", 1, 1, 80, 25, A%, 102
-
- FOR XX% = 1 TO 21 STEP 2
- PRINTW "WINDOWS R-E-Z ────── WINDOWS R-E-Z ────── WINDOWS R-E-Z ────── WINDOWS R-E-Z", XX%, 2
- IF XX% <> 21 THEN PRINTW STRING$(76, 176), XX% + 1, 2
- NEXT
- IF DEMOATTR% = 112 THEN INFOATTR% = 15 ELSE INFOATTR% = 31
- INFOLINE 24, 2, 78, INFOATTR%
-
- '-------------- MAIN MENU WINDOW ---- USES PULLDOWN ROUTINE -----------------
-
- MAIN.MENU:
-
- AAA% = COL%(111)
- MAKEWIND 2, "@WINDOWS R-E-Z", 5, 6, 30, 7, AAA%, 111
- PRINTW "CONNECT Software", 1, 100
- PRINTW "Version 6.10", 2, 100
- PRINTW "Jun. 1, 1993", 3, 100
- MAKEWIND 1, "@***** Instructions *****", 14, 100, 75, 8, AAA%, 111
- PRINTW "To demonstrate most of the features included with WINDOW R-E-Z use the", 1, 2
- PRINTW "PULLDOWN WINDOWS. Press ALT or use the MOUSE to make a menubar selec-", 2, 2
- PRINTW "tion. Instuctions for most of the routines are printed on the infoline", 3, 2
- PRINTW "at the bottom of the display...", 4, 2
-
- HATTR% = 124
- A% = COL%(113): IF A% = 15 THEN A% = 112: HATTR% = 127
- PRINTMENUBAR (A%)
- RKEY% = 0: BARADJ% = 1
- OLDMR% = 0: OLDMC% = 0: OLDLB% = 0: OLDRB% = 0
-
- PULL:
- DO
- WIND% = 0
- BAR% = 0 '0=ATL key entry to pulldown. 1=enter pulldown without ALT
- PRINTINFO " Press ALT or use the MOUSE to make a menubar selection....."
- INFOFIXED " Demonstration: "
- DO
- IF MOUSE.DETECTED% = 1 THEN
- IF WAVAIL%(3) = 1 THEN
- MAKEWIND 3, "", 9, 53, 22, 3, AAA%, 11
- PRINTW "< Press Mouse Here >", 1, 100
- END IF
- IF MOUSEINWIND%(3) = 5 THEN
- LBUT% = LBUTTON%: RBUT% = RBUTTON%
- IF LBUT% + RBUT% > 0 THEN
- REDIM M$(1), C$(1): C$(1) = "OK"
- SELECT CASE LBUT% + RBUT%
- CASE 1
- IF LBUT% = 1 THEN
- M$(1) = "@ Left Button"
- ELSE
- M$(1) = "@ Right Button"
- END IF
- CASE ELSE
- M$(1) = "@ Both Buttons"
- END SELECT
- M$(1) = M$(1) + " pressed in window! "
- PRINTINFO " Select OK...."
- J% = CHOICEWIND%("", M$(), C$(), 100, 100, 112, 0, 1, 11)
- RKEY% = 27: EXIT DO
- END IF
- END IF
- END IF
- PULLDOWN PULLINFO$(), BAR%, WIND%, "12OE", RKEY%, A%, HATTR%, 11' PULLDOWN WINDOWS
- LOOP WHILE RKEY% = 0
- INFOFIXED ""
- LOOP WHILE RKEY% = 27 OR RKEY% = 200
- IF RKEY% = 1 THEN BAR% = 1: WIND% = 1 ' F1 KEY
- IF RKEY% = 2 THEN BAR% = 1: WIND% = 2 ' F2 KEY
- IF (BAR% = 1 AND WIND% = 3) OR (BAR% = 1 AND WIND% = 5) THEN
- BARADJ% = 1
- ELSE ' NOT SCROLL WINDOW DEMO OR EXIT
- RSTRPULL 1 ' RESTORE AREA UNDER PULLDOWN WINDOW.
- RSTRWIND 2, 1 ' RESTORE "CONNECT SOFTWARE" WINDOW.
- RSTRWIND 1, 1 ' RESTORE PULLDOWN INSTRUCTION WINDOW.
- BARADJ% = 1
- END IF
- RSTRWIND 3, 1
-
- SELECT CASE BAR%
-
- '------------------ "WINDOWS" OPTION FROM MENUBAR --------------------------
-
- CASE 1
- SELECT CASE WIND%
- CASE 1 ' WINDOW MANAGEMENT SYSTEM
- CALL WINDOWDEMO
- CASE 2 ' GET ANSWER DEMO
- CALL GETANSDEMO
- CASE 3 ' SCROLL WINDOW DEMO
- CALL SCROLLDEMO(WASESC%)
- IF WASESC% = 1 THEN : GOTO PULL ' ESC EXITED SCROLL DEMO
- ' RE-ENTER PULLDOWN WITH PULLDOWN
- ' WINDOW 1 ACTIVE.
-
- CASE 5: ' EXIT WAS SELECTED
- PRINTINFO ("Press < Yes > to quit or < No > to continue. Press ENTER to accept...")
- REDIM TEXT$(0), Choice$(2)
- Choice$(1) = "No": Choice$(2) = "Yes"
- SELECT CASE CHOICEWIND%("@ End this Demonstration..", TEXT$(), Choice$(), 7, 26, 112, 127, 1, 112)
- CASE 2 ' YES
- CLS : END
- CASE ELSE ' NO OR ESC
- BAR% = 0: WIND% = 0
- RSTRPULL 0: GOTO PULL
- END SELECT
- CASE ELSE
- END SELECT
-
- '------------------- "CONTROL BOX" OPTION FROM MENUBAR ---------------------
- CASE 2
- CALL CONTROLBOX
-
- '--------------------- "INPUT" OPTION FROM MENUBAR--------------------------
- CASE 3 ' INPUT ROUTINES
- SELECT CASE WIND%
- CASE 1 ' MULTI-FIELD INPUT
- CALL MULTINPUTDEMO1
- CASE 2 ' "CHANGE" MULTI-FIELD INPUT
- CALL MULTINPUTDEMO2
- CASE 3 'INPUT WINDOW DEMO
- CALL INPUTWINDOWDEMO
- CASE 4
- CALL CHOICEDEMO
- CASE ELSE
- END SELECT
-
- '----------------------- "DIRECTORY" OPTION FROM MENUBAR ------------------
- CASE 4
- DELWIND 1
- CALL GETFILE(P$, F$, RKEY%)
- IF RKEY% <> 27 THEN
- REDIM C$(1): C$(1) = "OK"
- REDIM T$(4)
- T$(2) = " Path: " + P$: T$(3) = " File: " + F$
- PRINTINFO " Select OK...."
- A% = COL%(31)
- J% = CHOICEWIND%("@ **** Selections ****", T$(), C$(), 10, 100, A%, 0, 0, 112)
- END IF
- RSTRWIND 4, 1
-
- '---------------------------------- COLOR ----------------------------------
- CASE 5
- CHNGPULL 5, -1, 0 ' make all active
- CHNGPULL 5, WIND%, 112 ' make selected inactive
- SHADCOL% = 7
- DEMOATTR% = 112
- DEMONOHI% = 0
- RSTRINFO 1
- SELECT CASE WIND%
- CASE 2
- CHNGPULL 5, 2, 120
- SHADCOL% = 8
- DEMOATTR% = 0
- CASE 3
- DEMONOHI% = 1
- CASE ELSE
- END SELECT
- SETWIND DEMOFAST%, DEMOSOUND%, SHADCOL%, DEMONOHI%, 15
- GOTO PREINTRO
- '-------------------------------- ORDER FORM -------------------------------
-
- CASE 6
- RSTRINFO 0
- CURINFO& = GETCUR&
- A% = COL%(31): IF A% = 15 THEN A% = 112
-
- TOFLD% = 1: FROMFLD% = 0
-
- MAKEWIND 1, "@*** WINDOWS R-E-Z Order Form ***", 100, 100, 80, 25, A%, 101
- PRINTW "Name....... Date.....", 2, 2
- PRINTW "Address.... Registered User (Y/N).", 4, 2
- PRINTW "Address.... Registration Number..", 6, 2
- PRINTW "City/State.", 8, 2
- PRINTW "Zip Code... ( Enter 0 if not USA ) USA or CANADA (Y/N)..", 10, 2
- PRINTW "Programming Language.. Disk Size............", 12, 2
-
-
- PRINTW "Hard Copy Documentation (Y/N). ( Same as on disk. Lazer printed. Three ) ", 14, 2
- PRINTW "( ring binder - $15.00 - USA orders only.)", 15, 36
-
- PRINTW "TERMS: Check/ money order/ Visa/ MC. Fees detailed on hard copy order form.", 17, 2
- PRINTW "Visa / Master card # Expiration date:", 19, 2
-
- NEWCOLOR 15
- PREYN$ = Order$(7)
-
- J$ = SPACE$(76)
-
- PREORDER:
-
- SELECT CASE TOFLD%
- CASE 1
- I$ = "Input your name."
- CASE 2, 3, 4
- I$ = "Input your address."
- CASE 5
- I$ = "Input your zip code."
- CASE 6
- I$ = "Enter today's date. (" + DATETYPE$(DFORMAT%) + ") Must be valid to exit field!"
- CASE 7
- I$ = "Input Y if you are a registered user or N if not."
- CASE 8
- I$ = "If you are a registered user input your registation number."
- CASE 9
- I$ = "Enter Y if your address is in USA or CANADA / N if not."
- CASE 10
- I$ = "CHOICES: QuickBASIC 4.5 / VBDOS 1.00 / BASIC 7.1 - PDS"
- GOSUB SPINST
- CASE 11
- I$ = "CHOICES: 5.25 in. 1.2M / 5.25 in. 360k / 3.5 in. 1.4M / 3.5 in. 720k"
- GOSUB SPINST
- CASE 12
- I$ = "Enter Y for hard copy documentation or N for none."
- CASE 13
- I$ = "Enter Visa/Master Card number if using same."
- CASE 14
- I$ = "Enter Visa/Master card expiration date. ( mm/yy )"
- CASE ELSE
- END SELECT
- IF TOFLD% < 9 OR TOFLD% > 11 THEN I$ = "INSTRUCTIONS: " + I$
-
- LSET J$ = I$
- PRINTW J$, 21, 100
-
- MULTINPT 4, TOFLD%, "", FROMFLD%, RKEY%, Order$(), SELFIELD%
- CUROFF
- IF SELFIELD% = 15 THEN RKEY% = 1
- IF SELFIELD% = 16 THEN RKEY% = 10
- IF (FROMFLD% = TOFLD%) AND RKEY% = 100 THEN RKEY% = 32
-
- IF RKEY% = 32 THEN ' Space bar - fields 9,10,11
- SELECT CASE FROMFLD%
- CASE 10 ' Space bar - field 10
- LAN% = LAN% + 1: IF LAN% = 4 THEN LAN% = 1
- Order$(10) = LAN$(LAN%) ' change language
- CASE 11 ' Space bar - field 11
- DSIZE% = DSIZE% + 1: IF DSIZE% = 5 THEN DSIZE% = 1
- Order$(11) = DISK$(DSIZE%) ' change disk type
- CASE ELSE
- END SELECT
- GOTO PREORDER
- END IF
-
- ' Delete the space bar instruction window if the field is not a
- ' "multi-choice field" or MULTINPT is exited via a function key.
-
- IF FROMFLD% >= 10 AND FROMFLD% <= 11 THEN
- IF TOFLD% < 10 OR TOFLD% > 11 OR RKEY% < 11 THEN
- RSTRWIND 3, 1
- END IF
- END IF
-
- IF RKEY% > 10 THEN ' Was not a F1 or F10
- GOTO PREORDER ' FROMFLD% can't = 0 so single field
- END IF ' only will update ( for speed ).
- ' Program can get here if cursor movement
- ' key is pressed on fixed-choice field or
- ' any other field
-
- IF RKEY% = 10 THEN ' F10 key was pressed to exit MULTINPT
- FERR% = 0
- FOR XX% = 1 TO 14 ' check for blank fields
- SELECT CASE XX%
- CASE 1, 4, 5, 6, 7, 9, 12 ' fields require entry
- IF Order$(XX%) = "" THEN
- FERR% = 1
- EXIT FOR
- END IF
- CASE 8 ' field 8 requires entry if field 7 = "Y"
- IF Order$(7) = "Y" AND Order$(XX%) = "" THEN
- FERR% = 1
- EXIT FOR
- ELSE
- IF Order$(7) = "N" AND Order$(XX%) <> "" THEN
- FERR% = 2
- EXIT FOR
- END IF
- END IF
- CASE 14 ' field 15 requires entry if field 14 has entry
- IF Order$(13) <> "" AND Order$(14) = "" THEN
- FERR% = 1
- EXIT FOR
- END IF
- CASE ELSE
- END SELECT
- NEXT
-
- IF FERR% = 1 THEN ' a blank field was found
- GETANS "BLANK FIELD: Entry required. Press any key...", "", "", 100, 100, 112, 0, 11
- TOFLD% = XX%: FROMFLD% = 1: GOTO PREORDER
- ELSEIF FERR% = 2 THEN
- GETANS "Field must be blank if Registered user field = N. Press any key...", "", "", 100, 100, 112, 0, 11
- TOFLD% = XX%: FROMFLD% = 1: GOTO PREORDER
- END IF
- OANS$ = ""
- CLEARKB
- GETANS "Prepare your printer. Press any key when ready...", "", OANS$, 18, 100, 143, 143, 2
- IF OANS$ = CHR$(27) THEN GOTO PREORDER
-
- ON ERROR GOTO PRINTERROR
- LPRINT
- LI$ = STRING$(76, "-")
- LPRINT TAB(4); LI$
- LPRINT TAB(28); "WINDOWS R-E-Z ORDER FORM"
- LPRINT TAB(34); "Version 6.10"
- LPRINT TAB(4); LI$
- LPRINT
- FOR P% = 1 TO 4
- LPRINT " " + Order$(P%);
- IF P% = 1 THEN LPRINT TAB(53); "Date: " + Order$(6);
- IF P% = 2 THEN LPRINT TAB(53); "Registered User: " + Order$(7);
- IF P% = 3 THEN LPRINT TAB(53); "Registration Number: " + Order$(8)
- IF P% = 4 THEN
- LPRINT " " + Order$(5);
- ELSE
- LPRINT : LPRINT
- END IF
- NEXT
- LPRINT
- LPRINT TAB(4); LI$
- LPRINT
- LPRINT " Programming Language: " + Order$(10)
- LPRINT
- LPRINT " Disk Size: " + Order$(11)
- LPRINT
- LPRINT TAB(4); LI$
- LPRINT
- LPRINT " Visa / Master card # " + Order$(13); TAB(55); "Expiration Date: " + Order$(14)
- LPRINT
- LPRINT " Signature:"
- LPRINT " -----------------------------------"
- LPRINT TAB(4); LI$
- LPRINT
- LPRINT TAB(20); "Registration / Update fee: ----------------------- ";
- IF Order$(7) = "N" THEN
- FEE$ = "$32.50": FEE% = 3250
- ELSE
- FEE$ = "$22.50": FEE% = 2250
- END IF
- LPRINT FEE$
- LPRINT
- LPRINT TAB(20); "Hard copy documentation charge ------------------- ";
- IF Order$(12) = "Y" THEN
- FEE$ = "$15.00": FEE% = FEE% + 1500
- ELSE
- FEE$ = ""
- END IF
- LPRINT FEE$
- LPRINT
- LPRINT TAB(20); "Shipping and Handling ---------------------------- $2.50"
- LPRINT
- LPRINT TAB(20); "Extra shipping and handling - outside USA/CANADA - ";
- IF Order$(9) = "N" THEN
- FEE$ = " $2.00": FEE% = FEE% + 200
- ELSE
- FEE$ = ""
- END IF
- LPRINT FEE$
- LPRINT
- FEE$ = STR$(FEE% + 250)
- MID$(FEE$, 1) = "$"
- FEE$ = LEFT$(FEE$, 3) + "." + RIGHT$(FEE$, 2)
-
- LPRINT TAB(35); " TOTAL CHARGE --------- ";
- LPRINT FEE$
- LPRINT
- LPRINT TAB(4); LI$
- LPRINT
- LPRINT " Make checks and money orders payable to: CONNECT Software"
- LPRINT
- LPRINT " Send completed order form to: CONNECT Software"
- LPRINT TAB(37); "6192 Fawn Meadow"
- LPRINT TAB(37); "Farmington, NY 14425"
- LPRINT
- LPRINT
- LPRINT " Orders paid with a credit card or money order will be shipped within "
- LPRINT " two weeks of receipt. Orders paid with checks will be shipped within"
- LPRINT " three weeks of receipt."
- LPRINT
- LPRINT " Phone Orders - 6:OOpm - 9:00pm EST Weekdays and weekends."
- LPRINT " - (716) 924-3439"
- LPRINT
- LPRINT " Call person to person for RICH - CONNECT SOFTWARE"
-
- LPRINT TAB(4); LI$
- LPRINT CHR$(12)
- DONEORDER:
- ON ERROR GOTO 0
-
- END IF
-
- RSTRWIND 1, 1 ' It was a function key
- SETCUR (CURINFO&)
-
- CASE ELSE
-
- END SELECT
-
- GOTO MAIN.MENU
-
- PRINTERROR:
- OANS$ = ""
- GETANS "PRINTER ERROR: (R)etry or (A)bort.", "RA", OANS$, 100, 100, 143, 0, 2
- IF OANS$ = "R" THEN RESUME ELSE RESUME DONEORDER
-
- SPINST:
- IF WAVAIL%(3) THEN
- MAKEWIND 3, "", 18, 100, 75, 3, 240, 1
- NEWCOLOR 15
- PRINTW "Press SPACE BAR for selection. Press cursor movement key to exit field.", 1, 100
- CHNGWIND 1
- END IF
- RETURN
-
- 'TEST: ' to test key trapping
- ' C& = GETCUR& ' requires a "TRAP" library
- ' PRINT "RWERWER"
- ' SETCUR C&
- 'RETURN
-
- FUNCTION COL% (A%)
- '------------------------------------------------------------------------
- ' used by all routines to set color based on user's selection of color.
- '------------------------------------------------------------------------
-
- ' DEMOATTR% IS SHARED - IT IS SET IN MAIN MODULE
- ' DEMOATTR% = 112 IF BLACK AND WHITE OR NO HIGH INTENSITY
-
- IF DEMOATTR% = 112 THEN COL% = 15 ELSE COL% = A%
-
- END FUNCTION
-
- SUB CONTROLBOX
-
- STATIC PASS%, RTRN$() ' static vars.
- STATIC ISFAST%, SETSND%, SETCURSOR%, SETERASE%, PRESSSND%, SETDECIMAL%
-
- C& = GETCUR& ' save cursor position/size in C&
-
- ' info-line is active from caller so this only changes it's color
- INFOLINE 0, 0, 0, 15
-
- A% = COL%(31): IF A% = 15 THEN A% = 112 ' set contol box color
-
- IF PASS% = 0 THEN
- ' --------------------------------------------------------------------
- ' on first call to this sub -- do this
- ' --------------------------------------------------------------------
- REDIM RTRN$(18)
- FOR X% = 1 TO 12: RTRN$(X%) = "( )": NEXT
- RTRN$(5) = "(+)" ' cursor to 1st field pos = yes
- SETERASE% = 1: RTRN$(8) = "(+)" ' erase on 1st key = yes
- ISFAST% = 1: RTRN$(4) = "[OFF]" ' fast print for CGA = OFF
- SETSND% = 1: RTRN$(2) = "(+)" ' sound = click
- PRESSSND% = 1: RTRN$(10) = "(+)" ' sound for bad input = yes
- SETDECIMAL% = 1: RTRN$(12) = "(+)" ' decimal point = period
- PASS% = 1 ' flag for 2nd pass
- RTRN$(16) = "< SOUND >" ' test sound button
- RTRN$(17) = "< OK >" ' ok button
- RTRN$(18) = " < CANCEL > " ' cancel button
- END IF
- RTRN$(13) = "": RTRN$(14) = "": RTRN$(15) = ""
-
- ' save - so original values can be restored if <ESC> or <CANCEL> exits.
-
- REDIM OLDRTRN$(18)
- FOR X% = 1 TO 18: OLDRTRN$(X%) = RTRN$(X%): NEXT
- ISFAST2% = ISFAST%: SETSND2% = SETSND%: SETCURSOR2% = SETCURSOR%
- SETERASE2% = SETERASE%: PRESSSND2% = PRESSSND%
- SETDECIMAL2% = SETDECIMAL%: DFORMAT2% = DFORMAT%
-
- GOSUB INPT.PARAMETERS
- GOSUB GENERAL.PARAMETERS
-
- ' ------------------------ Make the input screen ------------------------
- MAKEWIND 10, "@ * ENTER=ACCEPT * *** Control Box *** * ESC=CANCEL *", 100, 100, 80, 25, A%, 101
-
- PRINTW "Set sound...........", 1, 3 ' sound box
- BOXW 2, 2, 22, 5, 1
- PRINTW "No sound", 3, 7
- PRINTW "Click", 4, 7
- PRINTW "Beep", 5, 7
-
- PRINTW "Slow print for CGA..", 7, 3 ' slow print for cga box
- BOXW 8, 2, 22, 3, 1
- PRINTW "Slow print", 9, 9
-
- PRINTW "Date format..", 11, 3
- MAKEWIND 3, "", 15, 3, 14, 8, A%, 1 ' make the date scroll window
- PRETYPE% = DFORMAT%
- KIND$ = "SV": NOREFRESH% = 0 ' display the scroll window
- GOSUB SCROLLBOX ' this displays it/
- KIND$ = "S": NOREFRESH% = 1 ' for future calls to sub SCROLLBOX
-
- CHNGWIND 10
-
- PRINTW "Set cursor on field entry ....", 1, 27 ' cursor position box
- BOXW 2, 26, 32, 4, 1
- PRINTW "To end of text", 3, 31
- PRINTW "To start of text", 4, 31
-
- PRINTW "First valid character pressed.", 6, 27 ' blank on 1st key box
- BOXW 7, 26, 32, 4, 1
- PRINTW "Prints", 8, 31
- PRINTW "Erases field and prints", 9, 31
-
- PRINTW "Pressing an invalid key.......", 11, 27 ' sound on invalid key box
- BOXW 12, 26, 32, 4, 1
- PRINTW "Makes no sound", 13, 31
- PRINTW "Makes the default sound", 14, 31
-
- PRINTW "Print decimal designator as...", 16, 27 ' decimal point box
- BOXW 17, 26, 32, 4, 1
- PRINTW "A comma (non-USA) ", 18, 31
- PRINTW "A period", 19, 31
-
- PRINTW "**** TEST ****", 1, 62 ' test box
- BOXW 2, 61, 16, 12, 1
- PRINTW "Text......", 3, 64
- PRINTW "Number....", 6, 64
- PRINTW "Date......", 9, 64
-
- NEWCOLOR 112 ' ok/cancel buttons
- BOXW 14, 63, 12, 3, 2
- BOXW 17, 63, 12, 3, 2
- NEWCOLOR A%
-
- TOFLD% = 1 ' enter of 1st field
- OPTION$ = "VIEW" ' view only
- FROMFLD% = 0 ' update all fields
- GOSUB GETMULT ' display input fields
- OPTION$ = "U" ' field order is user defined
- ' for TAB & SHIFT/TAB
- RKEY% = 0: FROMFLD% = 1 ' update 1st field only
-
- '-----------------------------------------------------------------------
- ' go from input fields to date scroll window until ESC, ENTER are pressed
- ' or < OK >, < CANCEL > are selected.
- '-----------------------------------------------------------------------
- DO WHILE RKEY% <> 13 AND RKEY% <> 27
-
- GOSUB GETMULT ' enter MULTINPT
-
- DO WHILE LBUTTON% ' if left button is pressed...
-
- ' see if the mouse cursor is in an input field
- INFIELD% = MOUSEINMULT%(5)
- IF INFIELD% > 0 THEN TOFLD% = INFIELD%: GOSUB GETMULT
-
- ' see if the mouse cursor is in the scroll window
- IF MOUSEINWIND%(3) > 0 THEN GOSUB SCROLLBOX
- LOOP
-
- ' scroll window entered via UP,DOWN,TAB,SHIFT/TAB from MULTINPT
- IF TOSCROLL% = 1 THEN GOSUB SCROLLBOX
-
- LOOP
- ' -----------------------------------------------------------------------
-
- DELWIND 3 ' remove saved scroll window from
- CALL RSTRWIND(10, 1) ' window memory and restore area under
- ' control panel.
-
- IF RKEY% = 27 THEN
- '----------------------------------------------------------------------
- ' restore original values -- ESC was pressed or CANCEL was selected.
- '----------------------------------------------------------------------
- FOR X% = 1 TO 18: RTRN$(X%) = OLDRTRN$(X%): NEXT
- ISFAST% = ISFAST2%: SETSND% = SETSND2%: SETCURSOR% = SETCURSOR2%
- SETERASE% = SETERASE2%: PRESSSND% = PRESSSND2%
- SETDECIMAL% = SETDECIMAL2%: DFORMAT% = DFORMAT2%
- END IF
-
- ' set variables shared with main module
- DEMOFAST% = ISFAST%: DEMOSOUND% = SETSND%
- IF SHADCOL% = 8 THEN INFOLINE 0, 0, 0, 31 ' restore info-line color
- SETCUR (C&) ' restore cursor size/position
-
- EXIT SUB ' get ouy
-
- GETMULT:
-
- IF RKEY% <> 13 AND RKEY% <> 27 THEN
- TOSCROLL% = 0
- INF$ = " Use the ARROW keys or MOUSE to select. Use TAB, SHIFT/TAB or Mouse to move."
-
- ' -------- TOFLD% represents the field the cursor is entering -------
- SELECT CASE TOFLD%
- CASE 1 TO 3 ' entering a "set sound" field
- TOFLD% = 1 + SETSND% ' adjust to mark proper one
- RTRN$(TOFLD%) = "(+)" ' " "
- CASE 5, 6 ' entering a "set cursor pos." field
- TOFLD% = 5 + SETCURSOR% ' adjust to mark proper one
- RTRN$(TOFLD%) = "(+)"
- CASE 7, 8 ' entering "blank on 1st char" field
- TOFLD% = 7 + SETERASE% ' adjust to mark proper one
- RTRN$(TOFLD%) = "(+)"
- CASE 9, 10 ' entering a "sound for bad" char field
- TOFLD% = 9 + PRESSSND% ' adjust to mark proper one
- RTRN$(TOFLD%) = "(+)"
- CASE 11, 12 ' entering a "set decimal pt" field
- TOFLD% = 11 + SETDECIMAL% ' adjust to mark proper one
- RTRN$(TOFLD%) = "(+)"
- CASE 4, 16 ' CGA PRINT, < SOUND > fileds
- INF$ = " Press SPACE bar or CLICK mouse to select. TAB, SHIFT/TAB moves."
- CASE 17 TO 18 ' <OK), <CANCEL> fields
- INF$ = " Press SPACE bar, ENTER or CLICK mouse to select. TAB, SHIFT/TAB moves."
- CASE 13 ' test TEXT field
- INF$ = " Enter text.."
- CASE 14 ' test NUMBER field
- INF$ = " Enter a number..."
- CASE 15 ' test DATE field
- INF$ = " * NOTE: DATE MUST BE VALID IN SPECIFIED FORMAT OR FIELD CAN NOT BE EXITED *"
- END SELECT
- PRINTINFO INF$ ' print the info string
-
- MULTINPT 2, TOFLD%, OPTION$, FROMFLD%, RKEY%, RTRN$(), 0
-
- ' make ENTER on < CANCEL > the same as SPACE BAR on < CANCEL >
- IF RKEY% = 13 AND FROMFLD% = 18 THEN RKEY% = 32
-
- IF RKEY% = 100 THEN ' left mouse button RELEASED in field
- FROMFLD% = TOFLD%
- SELECT CASE TOFLD%
- CASE 4, 16 TO 18 ' <SOUND>,<OK> or <CANCEL>
- RKEY% = 32 ' make same as SPCE BAR
- CASE ELSE
- END SELECT
- END IF
-
- SELECT CASE RKEY%
- CASE 16, 19, 100 ' UP/DOWN ARROWS or MOUSE exited
- SELECT CASE FROMFLD%
-
- CASE 1 TO 3 ' set sound fields
- FROMFLD% = 1 + SETSND%
- SETSND% = NEWSEL%(3, SETSND%, RKEY%, TOFLD% - 1, RTRN$(FROMFLD%))
- GOSUB GENERAL.PARAMETERS
- TOFLD% = FROMFLD%
-
- CASE 4 ' set CGA print speed fields.
- IF RKEY% = 19 THEN TOSCROLL% = 1 ' if DOWN ARROW set flag
- ' to enter scroll window.
-
- CASE 5, 6 ' set cursor entry position
- FROMFLD% = 5 + SETCURSOR%
- SETCURSOR% = NEWSEL%(2, SETCURSOR%, RKEY%, TOFLD% - 5, RTRN$(FROMFLD%))
- GOSUB INPT.PARAMETERS
- TOFLD% = FROMFLD%
-
- CASE 7, 8 ' set erase on 1st valid key pressed
- FROMFLD% = 7 + SETERASE%
- SETERASE% = NEWSEL%(2, SETERASE%, RKEY%, TOFLD% - 7, RTRN$(FROMFLD%))
- GOSUB INPT.PARAMETERS
- TOFLD% = FROMFLD%
-
- CASE 9, 10 ' set sound on bad key pressed
- FROMFLD% = 9 + PRESSSND%
- PRESSSND% = NEWSEL%(2, PRESSSND%, RKEY%, TOFLD% - 9, RTRN$(FROMFLD%))
- GOSUB INPT.PARAMETERS
- TOFLD% = FROMFLD%
-
- CASE 11, 12 ' set decimal designator
- OLDSETDECIMAL% = SETDECIMAL%
- FROMFLD% = 11 + SETDECIMAL%
- SETDECIMAL% = NEWSEL%(2, SETDECIMAL%, RKEY%, TOFLD% - 11, RTRN$(FROMFLD%))
- IF SETDECIMAL% <> OLDSETDECIMAL% THEN
- IF SETDECIMAL% = 0 THEN
- D$ = ".": ND$ = ","
- ELSE
- D$ = ",": ND$ = "."
- END IF
- POSIT% = INSTR(RTRN$(14), D$)
- IF POSIT% <> 0 THEN MID$(RTRN$(14), POSIT%, 1) = ND$
- CALL UPDATEFIELD(5, 14, RTRN$(14))
- GOSUB INPT.PARAMETERS
- END IF
- TOFLD% = FROMFLD%
- CASE ELSE
- END SELECT
-
- CASE 32 ' space bar exited MULTINPT
- SELECT CASE FROMFLD%
- CASE 4 ' from set CGA print field
- IF ISFAST% = 0 THEN
- ISFAST% = 1: RTRN$(4) = "[OFF]"
- ELSE
- RTRN$(4) = "[ON ]": ISFAST% = 0
- END IF
- GOSUB GENERAL.PARAMETERS
- CASE 16 ' from < SOUND > field
- DOSOUND
- CASE 17 ' from < OK > field
- RKEY% = 13 ' make same as ENTER
- CASE 18 ' from < CANCEL > field
- RKEY% = 27 ' make same as ESC
- CASE ELSE
- END SELECT
-
- CASE 14, 15 ' TAB,SHIFT/TAB exited MULTINPT
- SELECT CASE FROMFLD%
- '--------------------------------------------------------------------
- ' all CASES adjust TOFLD% so cursor move to the correct field
- ' when MULTINPT is re-entered
- '--------------------------------------------------------------------
- CASE 1 TO 3
- IF RKEY% = 14 THEN TOFLD% = 18 ELSE TOFLD% = 4
- CASE 4
- IF RKEY% = 15 THEN TOSCROLL% = 1
- CASE 5, 6
- IF RKEY% = 14 THEN TOSCROLL% = 1 ELSE TOFLD% = 7
- CASE 7, 8
- IF RKEY% = 14 THEN TOFLD% = 5 ELSE TOFLD% = 9
- CASE 9, 10
- IF RKEY% = 14 THEN TOFLD% = 7 ELSE TOFLD% = 11
- CASE 11, 12
- IF RKEY% = 14 THEN TOFLD% = 9 ELSE TOFLD% = 13
- CASE ELSE
- END SELECT
-
- CASE 200 ' MOUSE pressed out of all fields
- ' do nothing - above loop takes
- ' care or it
- CASE ELSE
- ' eliminate left/right arrows ctrl/end etc. as they will cause an
- ' exit for AUTOEXIT fields also.
-
- TOFLD% = FROMFLD%
- END SELECT
-
- END IF
-
- RETURN
-
- SCROLLBOX: ' date scroll window
- IF RKEY% <> 13 AND RKEY% <> 27 THEN
- CHNGWIND 10 ' control box is active
- CHNGWIND 3 ' make scroll window active
- OLDDFORMAT% = DFORMAT% ' save to see if changed
- CALL CUROFF ' turn the cursor off
-
- ' exit on TAB,SHIFT/TAB,ENTER,left MOUSE button pressed out of window,
- ' or RIGHT ARROW and LEFT ARROW
-
- B4SCRL "TEROA", "", 0, NOREFRESH%
-
- ' print the fixed info string - same for all scroll selections
- INFOFIXED " Use the arrow keys to select - TAB or Mouse to move."
-
- ' enter the scroll window
- RKEY% = -1
- SCRLWIND DATETYPE$(), DUMMY$(), "", 6, KIND$, DFORMAT%, DFORMAT%, 1, RKEY%, 0, 1, 0
-
- INFOFIXED "" ' erase the fixed info string
- IF RKEY% = 14 THEN RKEY% = 0: TOFLD% = 4 ' SHIFT/TAB to slow CGA print
- IF RKEY% = 15 THEN RKEY% = 0: TOFLD% = 5 ' TAB to set cursor position
- CHNGWIND 10 ' make the control box active
- IF DFORMAT% <> OLDDFORMAT% THEN ' date format was changed
- GOSUB INPT.PARAMETERS ' go reset it
- CALL UPDATEFIELD(2, 15, "") ' erase the date field
- RTRN$(15) = "" ' erase text for the field
- END IF
- END IF
-
- RETURN
-
- GENERAL.PARAMETERS:
- SETWIND ISFAST%, SETSND%, SHADCOL%, DEMONOHI%, 15
- RETURN
-
- INPT.PARAMETERS:
- INPTINIT DFORMAT%, SETDECIMAL%, SETCURSOR%, SETERASE%, PRESSSND%
- RETURN
-
- END SUB
-
- SUB INPUTWINDOWDEMO
-
- RSTRINFO 0 ' RESTORE AREA UNDER INFOLINE & KEEP IT ACTIVE.
- A% = COL%(32) ' GREEN/GRAY OR B/W
- A1% = A%
- ' make window 15 and print in it
-
- MAKEWIND 15, "", 3, 100, 72, 7, A%, 12
- PRINTW "** ALPHA/NUMERIC INPUT WINDOW **", 1, 100
- LINEW 2, 1
- PRINTW "This example allows upper and lower case input. Exclusive upper case", 3, 2
- PRINTW "or lower case is available . ALL input windows may use one ( OK ),", 4, 2
- PRINTW "two ( OK & CANCEL ), or no buttons.", 5, 2
-
- ' info-line
-
- PRINTINFO " Prompt in window's title box. ENTER/ESC - OK/CANCEL to complete."
-
- ' input alpha/numeric
-
- INPTWIND "@** Input your name **", "A", 12, 100, 30, A%, A1%, RTR$, RK%, 2, 112
-
- RSTRINPT 1 ' restore area under input window
-
- IF RK% <> 27 THEN ' if ESC/CANCEL was not pressed.
-
- ' DATE INPUT. DATETYPE$(DFORMAT%) IS SHARED VARIABLE WHICH SPECIFIES
- ' DATE FORMAT.
-
- ' clear window 15 ( the active window ) and print new twxt in same.
-
- CLRWIND
- PRINTW "** DATE INPUT WINDOW **", 1, 100
- LINEW 2, 1
- PRINTW "Ten date formats are available. User's MUST input a valid date or", 3, 2
- PRINTW "the field must be blank to exit the field. Invalid dates generate", 4, 2
- PRINTW "the default sound if an attempt is made to exit the field.", 5, 2
-
- ' new info-line text
- PRINTINFO " " + I$ + "Prompt to the left of the field in the window."
-
- ' input a date
-
- INPTWIND " DATE MUST = " + DATETYPE$(DFORMAT%) + " ( 1901 to 2099 ) to exit. ", "D", 15, 100, 10, A%, A1%, RTR2$, RK%, 2, 11
-
- RSTRINPT 1 ' restore area under input window
-
- END IF
-
- IF RK% <> 27 THEN ' if ESC/CANCEL was not pressed
-
- ' clear window 15 ( the active window ) and print new twxt in same.
-
- CLRWIND
- PRINTW "** NUMERIC INPUT WINDOW **", 1, 100
- LINEW 2, 1
- PRINTW "Although this example is for a real number, numeric input may be", 3, 2
- PRINTW "restricted to integers, or 1 to 6 decimal places.", 4, 2
- PRINTINFO " LOOK - no window or buttons! Press ENTER to accept / ESC to cancel."
-
- ' input a number
-
- INPTWIND "INPUT A REAL NUMBER: ", "R", 15, 100, 15, A%, A1%, RTR3$, RK%, 0, 0
-
- RSTRINPT 1 ' restore area under input window
-
- END IF
-
- RSTRINFO 0 ' restore area under info-line
- RSTRWIND 15, 1
- IF RK% <> 27 THEN ' WAS NOT ESC OR CANCEL
-
- ' display input text, date, and number in an "OK" choice window
-
- REDIM T$(3), C$(1)
- T$(1) = " NAME: " + RTR$
- T$(2) = " DATE: " + RTR2$
- T$(3) = " NUMBER: " + RTR3$
- C$(1) = "OK"
- JUNK% = CHOICEWIND%("@ **** The Data Entered Was:**** ", T$(), C$(), 100, 100, A%, 0, 1, 111)
- END IF
-
- END SUB
-
- SUB MULTINPUTDEMO1
-
- C& = GETCUR& ' save cursor position/size
-
- RSTRINFO 0 ' restore area under info-line
- A% = COL(79): IF A% = 15 THEN A% = 112 ' color = gray/red or b/w
- ' use sub choicewind to display text
-
- REDIM T$(3), C$(1)
- T$(1) = " Up to ten multi-field input screens may be defined using up to"
- T$(2) = " 150 input fields per screen. Fields may be set to alpha/numeric num-"
- T$(3) = " eric, date, or protected. Complete editing features are incorporated."
- C$(1) = "OK"
- ANS% = CHOICEWIND%("@***** Multi-field Input Demonstration *****", T$(), C$(), 4, 4, A%, 0, 1, 112)
-
- ' MAKE AND PRINT IN THE INPUT SCREEN.
-
- MAKEWIND 15, "@*** Multi-field Input Demonstration ***", 1, 1, 80, 25, A%, 102
- NEWCOLOR 112
- PRINTW SPACE$(78), 21, 1
- PRINTW "-- Mouse selectable fields --", 21, 100
- NEWCOLOR A%
-
- MAKEINPT:
- PRINTW "**** FIXED CHOICE FIELDS ****", 1, 48
- PRINTW "****** Press SPACE BAR ******.", 2, 48
- PRINTW "Decimal(0) Decimal(1) Decimal(2)", 2, 4
- PRINTW "Color...", 3, 48
- PRINTW "( Real number. Pad with zeros.) Location.", 5, 14
- PRINTW "Alpha/num. Upper case Alpha/num. Lower case Alpha/numeric", 7, 4
- PRINTW "*** Auto-advance fields -- Cursor moves to the next field automatically ***", 10, 100
- PRINTW "(-- Restricted Input --)", 12, 14
- PRINTW "M or F: Y or N: SOC SECURITY #.. - -", 13, 100
- PRINTW "* Auto-exit ( On change only ) and Auto-advance fields. (A,B ) *", 15, 100
- PRINTW "* Single field update on protected field C allows fast exit and return *", 16, 100
- PRINTW "A +B =C", 18, 20
- LINEW 20, 1
-
- FROMFLD% = 0 ' update all fields on initial entry
- TOFLD% = 1 ' start in field 1.
-
- DO ' will do until F1 is pressed
- ' get multi-field input
- MULTINPT 1, TOFLD%, "", FROMFLD%, RKEY%, MRTRN$(), SF%
-
- ' mouse selected field 18 or 19
-
- IF SF% = 18 THEN RKEY% = 1 ' make F1=EXIT exit same as F1 pressed
- IF SF% = 19 THEN RKEY% = 10 ' make F10=HELP exit same as F10 pressed
-
- ' FROMFLD% = 15 or 16 if the cursor is leaving field 15 or 16 or
- ' if MULTINPT is exited with the cursor in either field.
-
- IF FROMFLD% = 15 OR FROMFLD% = 16 THEN
- ' add values of fields 15 and 16 and update field 17
-
- MRTRN$(17) = STR$(WVAL&(MRTRN$(15)) + WVAL&(MRTRN$(16)))
- IF MRTRN$(15) + MRTRN$(16) = "" THEN MRTRN$(17) = ""
- FROMFLD% = 17 ' update 17 on entry
- END IF
-
- SELECT CASE RKEY% ' which key/feature exited???
- CASE 32, 100
-
- ' SPACE BAR pressed or MOUSE released in field
-
- SELECT CASE FROMFLD% ' Cursor is in
- CASE 5 ' field 5
-
- ' SPACE BAR pressed on --- MOUSE released in FIELD 5.
- ' COLCHOICE$() is shared from module level.
- ' change data in field 5.
-
- IF TOFLD% = FROMFLD% THEN
- COLCHOICE% = COLCHOICE% + 1
- IF COLCHOICE% = 5 THEN COLCHOICE% = 1 ' past end
- MRTRN$(5) = COLCHOICE$(COLCHOICE%)
- END IF
- CASE 6
-
- ' SPACE BAR pressed on --- MOUSE released in FIELD 6.
-
- IF TOFLD% = FROMFLD% THEN
- LOCHOICE% = LOCHOICE% + 1
- IF LOCHOICE% = 5 THEN LOCHOICE% = 1 ' past end
- MRTRN$(6) = LOCHOICE$(LOCHOICE%)
- END IF
- CASE ELSE
-
- END SELECT
- CASE ELSE
- END SELECT
-
- IF RKEY% = 10 THEN GOSUB HELP ' was F10 - go sub help
-
- LOOP UNTIL RKEY% = 1 ' was F1 or F1=EXIT was selected
- SETCUR (C&) ' restore cursor size/position
- RSTRWIND 15, 1 ' restore area under input screen
- EXIT SUB
-
- HELP:
- ' use choicewind for a HELP screen
-
- REDIM C$(1), T$(9)
- C$(1) = "OK"
- T$(1) = " Key(s): Function:"
- T$(2) = " CTRL END/ CTRL HOME Move to first or last field."
- T$(3) = " TAB/ SHIFT TAB Move from field to field horizontally."
- T$(4) = " UP/ DOWN ARROW /ENTER Move from field to field. ( user defined order )"
- T$(5) = " BACKSPACE/ DELETE Erase character to left of or under cursor."
- T$(6) = " LEFT/ RIGHT ARROW Moves cursor from start to end of text."
- T$(7) = " INSERT Toggle between insert and overstrike mode."
- T$(8) = " ESC/ CTRL E Returns field to pre-edited state. / Erases field."
- T$(9) = " HOME/ END Moves cursor to start or end of text."
- JUNK% = CHOICEWIND%("@***** Multi-field Input Instructions *****", T$(), C$(), 100, 100, 15, 0, 1, 112)
- RETURN
-
- END SUB
-
- FUNCTION NEWSEL% (MAXSEL%, sel%, RK%, MSEL%, RTRN$)
-
- SELECT CASE RK%
- CASE 16
- sel% = sel% - 1: IF sel% < 0 THEN sel% = MAXSEL% - 1
- CASE 19
- sel% = sel% + 1: IF sel% = MAXSEL% THEN sel% = 0
- CASE 100
- sel% = MSEL%
- END SELECT
- RTRN$ = "( )"
- NEWSEL% = sel%
-
-
- END FUNCTION
-
- SUB SCROLLDEMO (WASESC%)
-
- WASESC% = 0 ' WARNS CALLER ESC EXITED.
- A% = COL%(113): IF A% = 15 THEN A% = 112 ' BLUE/WHITE OR B/W
-
- ' MAKE A SCROLL WINDOW TO SELECT THE TYPE OF SCROLL WINDOW.
- CALL MAKEWIND(4, "", 5, 37, 38, 7, A%, 11)
-
- ' SAME INFO-LINE FOR ALL SELECTIONS.
- INFOFIXED " Pick a scroll window! Press ESC to cancel...."
-
- IF A% = 112 THEN HATTR% = 127 ELSE HATTR% = 124
- SCROLLRTRN% = 1
- DO
- B4SCRL "ERMO", "", 0, NR%
- RKEY% = -1
- SCRLWIND SUBSCROLL$(), DUMMY$(), "", 5, "A", SCROLLRTRN%, 1, 1, RKEY%, HATTR%, 0, 0
- IF RKEY% = 200 THEN
- IF MOUSEINWIND%(23) <> 0 AND MOUSEINWIND%(4) = 0 THEN RKEY% = 27
- END IF
- NR% = 1
- LOOP WHILE RKEY% = 200
-
- INFOFIXED ""
- RSTRWIND 4, 1 ' RESTORE SCROLL WINDOW.
- IF RKEY% = 27 THEN WASESC% = 1: EXIT SUB ' ESC
- RSTRPULL 1 ' RESTORE PULLDOWN WINDOW.
- RSTRWIND 2, 1 ' RESTORE CONNECT SOFTWARE WIND.
- RSTRWIND 1, 1 ' RESTORE MAIN INSTRUCT. WIND.
-
- SELECT CASE SCROLLRTRN%
- CASE 1 ' REGULAR SCROLL WINDOW PICKED
- OPT$ = "REGULAR SCROLL WINDOW"
- CASE 2 ' AUTO-EXIT PICKED
- KIND$ = "A"
- OPT$ = "AUTO-EXIT SCROLL WINDOW"
- CASE 3 ' MARK PICKED
- KIND$ = "M": mark% = 1
- OPT$ = "MARK SCROLL WINDOW"
- CASE 4, 5 ' VIRTUAL OR LIST PICKED
- 'title for virtual scroll windows
- TL$ = "NAME ADDRESS CITY ST. ZIP"
- IF SCROLLRTRN% = 4 THEN TYP$ = "" ELSE TYP$ = "L"
- CASE ELSE
- END SELECT
-
- ' MAKE THE SCROLL WINDOW PICKED.
- A% = COL(23)
- IF A% = 15 THEN HIATTR% = 15 ELSE HIATTR% = 31
-
- MAKEWIND 2, "@" + OPT$, 3, 100, 47, 14, A%, 111
-
- RTRN% = 0
- IF A% = 15 THEN NEWCOLOR 7
-
- IF SCROLLRTRN% = 4 OR SCROLLRTRN% = 5 THEN
- ' VIRTUAL OR LIST SCROLL WINDOW
- INFOFIXED " LOOK! You may scroll UP, DOWN, LEFT and RIGHT."
- IF SCROLLRTRN% = 4 THEN Ex$ = "MC"
- B4SCRL Ex$, "", 0, 0
- SCRLWIND ADDRESS$(), DUMMY$(), TL$, 10, TYP$, RTRN%, 1, 1, RKEY%, 0, 1, 1
- ELSE
- ' ALL OTHER SCROLL WINDOWS. KIND$ DEFINES THE TYPE.
- INFOFIXED " Demonstration: " + OPT$ + ". Instuctions are in the scroll window!"
- RTRN% = 1
- B4SCRL "MC", "", 0, 0
- SCRLWIND Scroll$(), DUMMY$(), "", 14, KIND$, RTRN%, 1, 1, RKEY%, HIATTR%, 1, 2
- END IF
- INFOFIXED ""
-
- IF RKEY% = 27 OR SCROLLRTRN% = 5 THEN GOTO DONESCROLL ' ESC
-
- IF mark% = 1 THEN ' WAS A MARK SCROLL WINDOW
- TR% = 100: TITLE$ = "@** THE MARKED ITEM(S) WERE: **"
- RSTRWIND 2, 1
- ELSE ' ALL EXCEPT MARK.
- TR% = 14: TITLE$ = "@** The item selected was: **"
- END IF
-
- ' PRINT RESULTS
- REDIM TEXT$(3)
- REDIM Choice$(1): Choice$(1) = "OK"
-
- IF mark% = 1 THEN ' PRINT "MARKED" SELECTIONS
- IF KIND$ = "" THEN
- TEXT$(2) = "@NO ITEMS WERE MARKED"
- ELSE
- M% = 0
- FOR X% = 1 TO LEN(KIND$)
- IF MID$(KIND$, X%, 1) <> " " THEN M% = M% + 1
- NEXT
- REDIM TEXT$(M%)
- START% = 1 ' START SEARCH AT POSITION 1
- M% = 0
- DO
- B% = MARKED%(KIND$, START%) ' B%= MARKED ITEM # IN SCROLL$()
- IF B% <> 0 THEN
- M% = M% + 1
- S$ = Scroll$(B%): GOSUB NEWSTR
- TEXT$(M%) = " " + S$
- ELSE
- EXIT DO
- END IF
- LOOP
- END IF
- ELSE
- S$ = Scroll$(RTRN%): GOSUB NEWSTR: TEXT$(2) = "@" + S$
- IF SCROLLRTRN% = 4 THEN TEXT$(2) = "@" + RTRIM$(LEFT$(ADDRESS$(RTRN%), 22)) + "...."
- END IF
- IF A% = 23 THEN A% = 31
-
- PRINTINFO " Click on OK or press ENTER, SPACEBAR, or ESC to proceed....."
- JUNK% = CHOICEWIND%(TITLE$, TEXT$(), Choice$(), TR%, 100, A%, 0, 1, 111)
-
- DONESCROLL:
- RSTRWIND 2, 1
- EXIT SUB
-
- NEWSTR:
- SA% = INSTR(S$, "@")
- IF SA% THEN S$ = LEFT$(S$, SA% - 1) + MID$(S$, SA% + 1)
- RETURN
-
- END SUB
-
- SUB WINDOWDEMO
-
- A% = COL%(79) ' RED/GRAY OR B/W
-
- ' MAKE INSTRUCTION WINDOW
- MAKEWIND 20, "@*** Window Demonstration Instructions ***", 2, 100, 72, 8, A%, 111
- PRINTW "Window memory is dynamically allocated and returned to BASIC when a", 1, 3
- PRINTW "window is restored. Up to 20 windows may be stacked and restored.", 2, 3
- PRINTW "Window memory is outside of BASIC's normal 64K storage area.", 3, 3
- PRINTW "( NOTE: This is window number 20 )", 4, 100
-
- Y% = 15
- PRINTINFO " Making windows ....."
- FOR X% = 1 TO 19
- IF DEMOATTR% = 112 THEN
- IF X% AND 1 THEN Y% = 7 ELSE Y% = 112
- END IF
- IF X% AND 1 THEN ADJ% = 1 ELSE ADJ% = 0
- MAKEWIND X%, "@** Demonstration ***", 11 + ADJ%, X% * 3, 20, 11, Y%, 111
- PRINTW "This is", 2, 100
- PRINTW "Window #" + STR$(X%), 3, 100
- FOR Z% = 1 TO 5
- A& = WTIMER&: WHILE WTIMER& = A&: WEND
- NEXT
- Y% = Y% + 16
- NEXT
-
- PRINTINFO " Press any key....."
- GETANS " **** Press any key **** ", "", "", 16, 100, 240, 0, 12
- PRINTINFO " Restoring windows ....."
-
- FOR X% = 19 TO 1 STEP -1
- RSTRWIND X%, 1
- FOR Y% = 1 TO 2
- A& = WTIMER&: WHILE WTIMER& = A&: WEND
- NEXT
- NEXT
- RSTRWIND 20, 1
-
- END SUB
-
-