home *** CD-ROM | disk | FTP | other *** search
- '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- '!!!!!!!!!!!! ** [ READ 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 QBALL45.QLB or QBNER45.QLB ****
- '**** For BASIC 7.1 enhanced version use PDSALL71.QLB or PDSNER71.QLB ****
- '**** For VBDOS 1.0 enhanced version use VBALL.QLB or VBNER.QLB ****
- '**** Load QB, QBX, or VBDOS with the /L option and the correct library ****
- '***************************************************************************
- '----------------------------------------------------------------------------
- '---------------------- Windows R-E-Z Demonstration -------------------------
- '---------------------- CONNECT Software ------------------------------------
- '---------------------- Nov. 01, 1992 ---------------------------------------
- '----------------------------------------------------------------------------
- '---------------------- Copyright 1988,1989,1990,1991,1992 ------------------
- '---------------------- By: CONNECT Software --------------------------------
- '---------------------- All rights reserved ---------------------------------
- '----------------------------------------------------------------------------
- ' **** VER 6.00 ------- LAST UPDATE ------- 11/01/1992 ****
- '****************************************************************************
- 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 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 PEEKASM& (S&, O&, BYVAL N%)
- DECLARE SUB PRINTINFO (I$)
- 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 SUB UPDATEFIELD (SCRN%, FLD%, TEXT$)
- DECLARE FUNCTION WAVAIL% (W%)
- DECLARE SUB WINDSTATUS ()
- '***************************************************************************
- 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$(19) ' FOR ORDER FORM
-
- LAN$(1) = "QuickBASIC 4.5" ' "
- LAN$(2) = "BASIC 7.1 - PDS" ' "
- LAN$(3) = "VBDOS 1.0"
- LAN% = 1: ORDER$(9) = 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$(10) = DISK$(1) ' "
- ORDER$(14) = "< F1=Exit >": ORDER$(15) = "< F10=Print >"
-
- '------ ARRAY REPRESENTING ALLOWABLE DATE FORMATS FOR INPUT ROUTINES --------
-
- DIM SHARED DATETYPE$(5)
- 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"
- CLS
- CALL CUROFF
-
- 'ON KEY(6) GOSUB TEST ' USE TO TEST TRAPPING
- 'KEY(6) ON
- '----------------------------------------------------------------------------
- REALSTART:
- SETWIND 1, 1, 1, 0, 0
-
- A% = 15
- ON ERROR GOTO DISKERROR
- PATH$ = FINDPATH$ ' FIND PRESENT DISK AND PATH
- ON ERROR GOTO 0
-
- '--------------------- SET DATA FOR SCROLL WINDOW DEMO ----------------------
- DIM SHARED SCROLL$(14) ' READ DATA FOR SCROLL WINDOW DEMO
-
- FOR X% = 1 TO 14 ' "
- READ SCROLL$(X%) ' "
- NEXT
-
- 'DATA FOR SCROLL WINDOW DEMO
- DATA This is a sample of a scroll window.
- DATA The A@RROW keys or different colored
- DATA letter can be pressed to make a sel-
- DATA ection. REGULAR scroll windows exit
- DATA when ENTER is pressed. AUTO-EXIT
- DATA scroll windows exit if the letter
- DATA pressed is found. END / HOME / PGUP
- DATA and PGDN keys respond as ex@pected.
- DATA MARK scroll windows mark or unmark
- DATA items in the window with the "+"
- DATA or "-" keys. The PRINT k@ey or the
- DATA SPACE B@AR marks or unmarks all
- DATA items. Press ECS to return to the
- DATA pulldown@ menu.
-
- '-------------- SET DATA FOR VIRTUAL SCROLL WINDOW DEMO ---------------------
-
- DIM SHARED ADDRESS$(1 TO 10)
- FOR X% = 1 TO 10 ' READ DATA FOR VIRTUAL SCROLL WINDOW DEMO
- READ ADDRESS$(X%)
- NEXT
-
- 'DATA FOR VIRTUAL SCROLL WINDOW DEMO
- DATA CONNECT Software 6192 Fawn Meadow Farmington NY 14425
- DATA Dell Computer Corp 9505 Arboretum Blvd Austin TX 78759
- DATA Micro Warehouse 1690 Oak St Lakewood NJ 08701
- DATA ZEOS 530 Fifth Ave NW St Paul MN 55112
- DATA Microsoft Press 21919 20th Ave SE Bothell WA 95041
- DATA Central Point Software Greenbrier Pkwy Oregon OR 97006
- DATA Eastman Kodak Corp 343 State St Rochester NY 14650
- DATA National Instruments 6504 Bridge Pt Pkwy Austin TX 73730
- DATA Gateway Computers 610 Gateway Dr N Souix City SD 57049
- DATA Microsoft Corporation One Microsoft Way Redmond VA 98052
-
- '-------------------- SET DATA FOR PULLDOWN WINDOWS -----------------------
-
- B% = 200: TEMP% = 0
- REDIM PWIND$(B%) ' READ DATA FOR
- ' PULLDOWN MENUBAR AND
- WHILE PWIND$(TEMP%) <> "ENDPULL" ' PULLDOWN WINDOWS.
- TEMP% = TEMP% + 1
- READ PWIND$(TEMP%)
- WEND
-
- 'PULLDOWN WINDOW #1
- DATA "Windows ", Scroll - Get Answer and more : 'MENUBAR & INFOLINE
-
- ' ** NOTE: IF INFO-LINE IS NOT USED THIS WOULD BE THE FIRST DATA LINE:
- ' DATA Windows,
-
- DATA Window Management System (F1) : 'WINDOW #1 SELECTIONS
- DATA Get answer windows (F2)
- DATA Scroll windows
- DATA -, Ex@it, ***
-
- 'PULLDOWN WINDOW #2
- DATA "Set-up ", "Set global parameters for WINDOW, INPUT, and SCROLL routines.
- DATA Control panel,***
-
- 'PULLDOWN WINDOW #3
- DATA "Input ", Single and Multi-field Input : 'MENUBAR & INFOLINE
- DATA Multi-field input, Look familiar? : 'WINDOW'S ITEMS
- DATA Input windows, ***
-
- 'PULLDOWN WINDOW #4
- DATA "Directory ",Several Features : 'MENUBAR & INFOLINE
- DATA Directory routines,*** : 'WINDOW'S ITEMS
-
- DATA "Color ", "Set for color, monochrome, or LCD displays"
- DATA Black and white, Color, No hi-intensity (B/W),***
-
- 'PULLDOWN WINDOW #6
- DATA "Order Me",*** Important!!! *** : 'MENUBAR & INFOLINE
- DATA Order form ,*** : 'WINDOW'S ITEMS
-
- DATA ENDPULL : 'END OF PULLDOWN DATA
-
- 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 SHARED PULLINFO$(14) ' INFO-LINE DATA
- FOR X% = 1 TO 14 ' READ DATA FOR EACH PULLDOWN
- READ PULLINFO$(X%) ' WINDOW'S INFO-LINE
- NEXT
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #1
- DATA "Make, save and restore windows.", Get a single key user response.
- DATA Several types of scroll windows.,,End demonstration.
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #2
- DATA Set user preferences..
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #3
- DATA Sample multi-field input screens.
- DATA Multi-field versatility., Variations of single field input windows.
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #4
- DATA Several useful directory routines.
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #5
- DATA Set for monochrome displays.,Set for color displays.
- DATA Set for displays (LCD) without hi-intensity.
-
- 'INFO-LINE DATA FOR PULLDOWN WINDOW #6
- DATA 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 FIRST INPUT SCREEN -------------------------
-
- CALL SETINPT(1, 25, "012", 0)
-
- FOR FLD% = 1 TO 19 ' READ THE DATA FOR THE MULT-FIELD
- READ CODE%, TR%, LC%, WD%, BASECOL%, ACTCOL%, MCOL%, RESTRICT$
- CALL MAKEFIELD(1, FLD%, CODE%, TR%, LC%, WD%, BASECOL%, ACTCOL%, MCOL%, RESTRICT$, "", 0, 0, 0)
- NEXT
-
- ' DATA FOR EACH FIELD ---- ALL FIELDS ARE AUTO-EXIT
-
- DATA 10000,6,5,10,15,15,15,"" : ' 0 decimal places
- DATA 10040,8,5,10,15,15,15,"" : ' " " padded with 0's
- DATA 10001,6,20,10,15,15,15,"" : ' 1 decimal place
- DATA 10002,6,35,10,15,15,15,"" : ' 2 decimal places
-
- DATA 30007,6,58,12,15,15,15,"" : ' fixed choice ( red blue .... )
- DATA 30007,8,58,12,15,15,15,"" : ' fixed choice ( north south ... )
-
- DATA 10017,11,5,20,15,15,15,"" : ' upper case alpha/numeric
- DATA 10027,11,31,20,15,15,15,"" : ' lower case alpha/numeric
- DATA 10007,11,55,20,15,15,15,"" : ' alpha/numeric
-
- DATA 11017,16,22,1,15,15,15,"MF" : ' upper case restricted to M or F
- DATA 11017,16,38,1,15,15,15,"YN" : ' upper case restricted to Y or N
-
- DATA 11000,16,60,3,15,15,15,"" : ' first 3 digits of SS number
- DATA 11000,16,64,2,15,15,15,"" : ' next 2 digits of SS number
- DATA 11000,16,67,4,15,15,15,"" : ' Last 3 digits of SS number
-
- DATA 11000,21,23,6,15,15,15,"" : ' A field of A+B=C - 0 digits decimal
- DATA 11000,21,38,6,15,15,15,"" : ' B field of A+B=C - 0 digits decimal
- DATA 100,21,53,7,15,15,15,"" : ' C field of A+B=C - ( protected )
-
- DATA 30107,24,15,11,112,112,15,"" : ' F1=EXIT ( mouse selectable )
- DATA 30107,24,55,12,112,112,15,"" : ' F10=HELP ( mouse selectable )
-
- '--------------------------- SET UP CONTROL BOX ----------------------------
-
- CALL SETINPT(5, 25, "EO", 127)
-
- FOR FLD% = 1 TO 18 ' READ THE DATA FOR THE MULT-FIELD
- READ CODE%, TR%, LC%, WD%, BASECOL%, ACTCOL%, MCOL%, CURPOS%
- CALL MAKEFIELD(5, FLD%, CODE%, TR%, LC%, WD%, BASECOL%, ACTCOL%, MCOL%, "", "", 0, CURPOS%, 1)
- NEXT
-
- ' DATA FOR EACH FIELD
- 'CODE%,TR%,LC%,WD%,BASECOL%,ACTCOL%,MCOL%,CURPOS%
-
- ' ALL FIELDS ARE AUTO-EXIT
-
- DATA 30000, 6,4,3,112,112,112,2 : ' Click
- DATA 30000, 7,4,3,112,112,112,2 : ' Beep
- DATA 30000, 8,4,3,112,112,112,2 : ' No sound
-
- DATA 30000, 12,4,5,112,112,112,2 : ' Slow print
-
- DATA 30000, 6,28,3,112,112,112,2 : ' Start of text
- DATA 30000, 7,28,3,112,112,112,2 : ' End of text
-
- DATA 30000, 11,28,3,112,112,112,2 : ' Erase and print
- DATA 30000, 12,28,3,112,112,112,2 : ' Prints
-
- DATA 30000, 16,28,3,112,112,112,2 : ' Make default sound
- DATA 30000, 17,28,3,112,112,112,2 : ' No sound
-
- DATA 30000, 21,28,3,112,112,112,2 : ' As a period
- DATA 30000, 22,28,3,112,112,112,2 : ' As a comma
-
- DATA 10007,7,65,10,15,15,15,0 : ' Text
- DATA 10030,10,65,10,15,15,15,0 : ' Number
- DATA 10008,13,65,10,15,15,15,0 : ' Date
- DATA 30007,15,65,9,112,112,7,3 : ' < SOUND >
-
- DATA 30007,18,65,10,112,7,7,5 : ' < Ok >
- DATA 30007,21,65,10,112,7,7,3 : ' < Cancel >
-
- '--------------------- SET UP "FIND - CHANGE TO INPUT SCREEN-----------------
-
- CALL SETINPT(3, 25, "E", 127)
-
- FOR FLD% = 1 TO 11 ' READ THE DATA FOR THE MULT-FIELD
- READ CODE%, TR%, LC%, WD%, BASECOL%
- READ ACTCOL%, MCOL%, RESTRICT$, EXITTO$, HOT%, CURPOS%, BRACKET%
- CALL MAKEFIELD(3, FLD%, CODE%, TR%, LC%, WD%, BASECOL%, ACTCOL%, MCOL%, RESTRICT$, EXITTO$, HOT%, CURPOS%, BRACKET%)
- NEXT
-
- ' DATA FOR EACH FIELD -- ALL FIELDS ARE AUTO-EXIT
-
- DATA 10007,8,26,41,112,112,112,"","F",0,0,0 : 'Field 1 = Find What:
- DATA 10007,11,26,41,112,112,112,"","T",0,0,0 : 'Field 2 = Change To:
-
- DATA 30007,14,13,25,112,112,112,"","M",5,2,0 : 'Field 3 = Match Upper/Lowercase
- DATA 30007,15,13,25,112,112,112,"","W",5,2,0 : 'Field 4 = Whole Word
-
- DATA 30007,14,45,21,112,112,112,"","1",5,2,0 : 'Field 5 = Active Window
- DATA 30007,15,45,21,112,112,112,"","2",5,2,0 : 'Field 6 = Current Module
- DATA 30007,16,45,21,112,112,112,"","3",5,2,0 : 'Field 7 = All Modules
-
- DATA 30007,19,13,19,112,112,7,"","V",12,3,1 : 'Field 8 = Find and Verify
- DATA 30007,19,33,14,112,112,7,"","C",3,3,1 : 'Field 8 = Change All
- DATA 30007,19,48,10,112,112,7,"","",0,3,1 : 'Field 10 = Cancel
- DATA 30007,19,59,8,112,112,7,"","H",3,3,1 : 'Field 11 = Help
-
- '--------- READ DATA FOR THE ORDER FORM INPUT SCREEN AND SET UP SAME -------
-
- CALL SETINPT(4, 25, "10", 0)
-
- FOR FLD% = 1 TO 15 ' READ THE DATA FOR THE MULT-FIELD
- READ CODE%, TR%, LC%, WD%, BASECOL%, ACTCOL%, MCOL%, RESTRICT$
- CALL MAKEFIELD(4, FLD%, CODE%, TR%, LC%, WD%, BASECOL%, ACTCOL%, MCOL%, RESTRICT$, EXTO$, 0, 0, 0)
- NEXT
- '***** FIELD DATA FOR ORDER FORM ******
-
- DATA 10007,5,14,32,15,15,15,"" : ' name - upper case
- DATA 10007,7,14,32,15,15,15,"" : ' address - upper case
- DATA 10007,9,14,32,15,15,15,"" : ' address - upper case
- DATA 10007,11,14,32,15,15,15,"" : ' city/state - upper case
- DATA 10010,13,14,5,15,15,15,"" : ' zip - padded w/0's
- DATA 10008,5,56,10,15,15,15,"" : ' date
- DATA 10017,7,69,1,15,15,15,"YN" : ' registered user ( Y or N )
- DATA 10000,9,69,5,15,15,15,"" : ' registration number
- DATA 30007,15,25,20,15,15,15,"" : ' programming language
- DATA 30007,15,58,20,15,15,15,"" : ' disk size
- DATA 11017,17,33,1,15,15,15,"YN" : ' hard copy docs ( Y or N )
- DATA 10007,22,24,20,15,15,15,"1234567890 " : ' Visa/MC card number
- DATA 10007,22,63,5,15,15,15,"1234567890/" : ' expiration date
-
- DATA 30107,2,7,11,112,112,15,"" : ' F1=ABORT (mouse selectable)
- DATA 30107,2,62,13,112,112,15,"" : ' F10=PRINT (mouse selectable)
-
- '------------------------- WINDOW, MOUSE INITIALIZATION --------------------
- DEMOATTR% = 112: SHADCOL% = 7: DEMONOHI% = 0
- JUNK% = 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 - 1992 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.00", TEXT$(), CHOICE$(), 100, 100, 112, 127, 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.00 --- 11/01/1992", 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:
-
- A% = COL%(111)
- MAKEWIND 2, "@WINDOWS R-E-Z", 4, 50, 25, 7, A%, 111
- PRINTW "Version 6.00", 1, 100
- PRINTW "CONNECT Software", 2, 100
- PRINTW "Nov. 1, 1992", 3, 100
-
- MAKEWIND 1, "@***** Instructions *****", 14, 100, 75, 8, A%, 111
- PRINTW "To demonstrate most of the features included with WINDOW R-E-Z use the", 1, 2
- PRINTW "PULLDOWN WINDOWS. Use the arrow keys, mouse, or press the appropriate", 2, 2
- PRINTW "letter to make a selection. Instuctions for most of the routines are", 3, 2
- PRINTW "printed on the info-line at the bottom of the display...", 4, 2
-
- HATTR% = 124
- A% = COL%(113): IF A% = 15 THEN A% = 112: HATTR% = 127
- PULL:
- INFOFIXED " Demonstration: "
- PULLDOWN PULLINFO$(), BAR%, WIND%, "12", RKEY%, A%, HATTR%, 11' PULLDOWN WINDOWS
- INFOFIXED ""
- IF RKEY% = 1 THEN BAR% = 1: WIND% = 1
- IF RKEY% = 2 THEN BAR% = 1: WIND% = 2
-
- IF (BAR% = 1 AND WIND% = 3) OR (BAR% = 1 AND WIND% = 5) THEN
- 'NOTHING
- 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.
- END IF
-
- 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
- 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 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$(), 100, 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 )", 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$ = "CHOICES: QuickBASIC 4.5 / VBDOS 1.00 / BASIC 7.1 - PDS"
- GOSUB SPINST
- CASE 10
- I$ = "CHOICES: 5.25 in. 1.2M / 5.25 in. 360k / 3.5 in. 1.4M / 3.5 in. 720k"
- GOSUB SPINST
- CASE 11
- I$ = "Enter Y for hard copy documentation or N for none."
- CASE 12
- I$ = "Enter Visa/Master Card number if using same."
- CASE 13
- 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%
- IF SELFIELD% = 14 THEN RKEY% = 1
- IF SELFIELD% = 15 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 9 ' Space bar - field 10
- LAN% = LAN% + 1: IF LAN% = 4 THEN LAN% = 1
- ORDER$(9) = LAN$(LAN%) ' change language
- CASE 10 ' Space bar - field 11
- DSIZE% = DSIZE% + 1: IF DSIZE% = 5 THEN DSIZE% = 1
- ORDER$(10) = 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% >= 9 AND FROMFLD% <= 10 THEN
- IF TOFLD% < 9 OR TOFLD% > 10 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, 11 ' 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 13 ' field 14 requires entry if field 13 has entry
- IF ORDER$(12) <> "" AND ORDER$(13) = "" 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
- LPRINT TAB(4); LI$
- LPRINT TAB(28); "WINDOWS R-E-Z ORDER FORM"
- LPRINT TAB(34); "Version 6.00"
- 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$(9)
- LPRINT
- LPRINT " Disk Size: " + ORDER$(10)
- LPRINT
- LPRINT TAB(4); LI$
- LPRINT
- LPRINT " Visa / Master card # " + ORDER$(12); TAB(55); "Expiration Date: " + ORDER$(13)
- LPRINT
- LPRINT " Signature:"
- LPRINT " -----------------------------------"
- LPRINT TAB(4); LI$
- LPRINT
- LPRINT TAB(35); "Registration / Update fee: -------- ";
- IF ORDER$(7) = "N" THEN
- FEE$ = "$32.50": FEE = 32.5
- ELSE
- FEE$ = "$22.50": FEE = 22.5
- END IF
- LPRINT FEE$
- LPRINT
- LPRINT TAB(35); "Hard copy documentation charge ---- ";
- IF ORDER$(11) = "Y" THEN
- FEE$ = "$15.00": FEE = FEE + 15
- ELSE
- FEE$ = ""
- END IF
- LPRINT FEE$
- LPRINT
- LPRINT TAB(35); "Shipping and Handling-------------- $2.50"
- LPRINT
- FEE$ = STR$(FEE + 2.5): MID$(FEE$, 1) = "$"
-
- LPRINT TAB(35); " TOTAL CHARGE --------- ";
- LPRINT USING "$##.##"; FEE + 2.5
- 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
-
- DISKERROR:
- E$ = "DISK ERROR"
- A% = A% + 128
- GETANS "Disk Error. Press any key...", "", "", 19, 100, A%, 0, 11
- A% = A% - 128
- RESUME REALSTART
-
- 'TEST: ' to test key trapping
- ' C& = GETCUR&
- ' 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 ------------------------
-
- CALL 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, 7, A%, 1 ' make the date scroll window
- PRETYPE% = DFORMAT%
- KIND$ = "V": NOREFRESH% = 0 ' display the scroll window
- GOSUB SCROLLBOX ' this displays it/
- KIND$ = "": 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 5, 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
- CALL PRINTW("▀▀▀▀▀▀▀▀▀▀▀▀", 12, 3) ' show scroll window 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
- SCRLWIND DATETYPE$(), DUMMY$(), "", 5, 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
- CALL PRINTW("────────────", 12, 3) ' show not in scroll window
- IF DFORMAT% <> OLDDFORMAT% THEN ' date format was changed
- GOSUB INPT.PARAMETERS ' go reset it
- CALL UPDATEFIELD(5, 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 GETANSDEMO
-
- A% = COL%(95) ' COLOR GRAY/PURPLE OR B/W
-
- ' MAKE WINDOW 1 AND PRINT IN SAME.
-
- MAKEWIND 1, "@***** Get Answer Window Demonstration *****", 4, 100, 72, 9, A%, 132
- PRINTW "Get answer windows are used to ask a question and wait for a single", 1, 100
- PRINTW "key response. They can also be used to pause a program and wait for", 2, 100
- PRINTW "any key to be pressed. Prompts may be windowed or un-windowed. The", 3, 100
- PRINTW "area under the prompt or window is restored on exit. If the response", 4, 100
- PRINTW "is displayed, ENTER must be pressed to accept it....", 5, 2
- PRINTINFO " Press Y or N. Press ENTER to accept...."
-
- ' Y, N or ESC are valid responses.. Displays "N" on entry as ANS$ = "N"
-
- ANS$ = "N"
- GETANS "Are you sure? (Y/N) " + S$, "YN", ANS$, 13, 100, A%, 15, 32
- IF ANS$ <> CHR$(27) THEN
- IF ANS$ = "Y" THEN TEMP$ = "YES" ELSE TEMP$ = "NO"
- GOSUB REPLY
-
- PRINTINFO " Press A, B or C..."
- ' A, B, C or ESC are valid. No fiels displayed on entry as ABS$ = ""
- ANS$ = ""
- GETANS "Press A, B or C to continue" + S$, "ABC", ANS$, 13, 100, A%, 0, 32
- END IF
- IF ANS$ <> CHR$(27) THEN
- TEMP$ = ANS$: GOSUB REPLY
- END IF
- RSTRWIND 1, 1
- EXIT SUB
-
- REPLY:
- PRINTINFO " Press any key....."
- GETANS "Your reply was: " + TEMP$ + ". Press any key...", "", "", 13, 100, A% + 128, 0, 32
- RETURN
-
- END SUB
-
- SUB INPUTWINDOWDEMO
-
- RSTRINFO 0 ' RESTORE AREA UNDER INFOLINE & KEEP IT ACTIVE.
- A% = COL%(32) ' GREEN/GRAY OR B/W
-
- ' 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%, A%, 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%, A%, 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%, A%, 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, 15
- 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$(VAL(MRTRN$(15)) + VAL(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
-
- SUB MULTINPUTDEMO2
- RSTRINFO 0 ' RESTORE AREA UNDER INFOLINE
- INFOLINE 0, 0, 0, 15
- C& = GETCUR&
-
- A% = COL%(23): IF A% = 15 THEN A% = 112 ' A%= COLOR -- B/W
- STATIC CHNGRTRN$(), ONSEARCH%, NOTFIRSTPASS%
- IF NOTFIRSTPASS% = 0 THEN
- REDIM CHNGRTRN$(11) ' FOR "CHANGE" MULTINPT
- CHNGRTRN$(3) = "[ ] Match Upper/Lowercase"
- CHNGRTRN$(4) = "[ ] Whole Word"
- CHNGRTRN$(5) = "(" + CHR$(4) + ") 1. Active Window"
- CHNGRTRN$(6) = "( ) 2. Current Module"
- CHNGRTRN$(7) = "( ) 3. All Modules"
- CHNGRTRN$(8) = "< Find and Verify >"
- CHNGRTRN$(9) = "< Change All >"
- CHNGRTRN$(10) = "< Cancel >"
- CHNGRTRN$(11) = "< Help >"
- ONSEARCH% = 5
- NOTFIRSTPASS% = 1
- END IF
-
- ' PRINT THE INPUT SCREEN IN WINDOW 15
-
- MAKEWIND 15, "@Multi-field Input. Extensive use of fixed choice fields.", 1, 1, 80, 25, A%, 102
- MAKEWIND 0, "@ Change ", 6, 100, 59, 15, 112, 11
- LINEW 12, 1
-
- CALL BOXW(1, 14, 43, 3, 1)
- PRINTWHOT "Find What:", 2, 2, 1, 127
-
- CALL BOXW(4, 14, 43, 3, 1)
- PRINTWHOT "Change To:", 5, 2, 8, 127
-
- CALL BOXW(7, 32, 25, 5, 1)
- PRINTW " Search ", 7, 40
- TOFLD% = 1 ' START IN FIELD ONE.
- FROMFLD% = 0 ' UPDATE ALL FIELDS.
-
- CHANGE:
- ' CURSOR TO FIELD 5 TO 7. THIS IS THE "SEARCH" SCOPE
-
- IF TOFLD% > 4 AND TOFLD% < 8 THEN
- TOFLD% = ONSEARCH%
- END IF
-
- SELECT CASE TOFLD% ' PU INSTRUCTIONS IN A$
- CASE 1, 2 ' ON ACTIVE (TOFLD%) FIELD.
- A$ = "Input data."
- CASE 3, 4
- A$ = "Press SPACE BAR to change."
- CASE 5, 6, 7
- A$ = "Press UP/DOWN arrow keys to change."
- CASE 8 TO 11
- A$ = "Press SPACE BAR/ENTER to select."
- CASE ELSE
- A$ = ""
- END SELECT
- A$ = A$ + " TAB = next field. ESC/ENTER exits."
-
- PRINTINFO " " + A$
-
- ' GET MULTIFIELD INPUT. TOFLD% = THE ACTIVE FIELD ON ENTRY. FROMFLD%
- ' REPRESENTS THE FIELD WHICH IS ACTIVE ON EXIT
-
- MULTINPT 3, TOFLD%, "U", FROMFLD%, RK%, CHNGRTRN$(), 0
-
- IF RK% = 50 THEN RK% = 100 ' key character selection
- IF RK% = 300 THEN GOTO CHANGE ' mouse release out of field
- IF RK% = 100 THEN FROMFLD% = TOFLD%
-
- IF FROMFLD% > 4 AND FROMFLD% < 8 THEN ' Cursor from search window.
- IF RK% = 16 OR RK% = 19 OR RK% = 100 THEN ' Was UP or DOWN arrow.
- IF RK% < 100 THEN
- IF TOFLD% = 4 THEN TOFLD% = 7 ' Keep cursor in the
- IF TOFLD% = 8 THEN TOFLD% = 5 ' search window.
- END IF
- MID$(CHNGRTRN$(ONSEARCH%), 2, 1) = " " ' make it a blank
- FROMFLD% = ONSEARCH% ' blank this field
- ONSEARCH% = TOFLD%
- MID$(CHNGRTRN$(TOFLD%), 2, 1) = CHR$(4) ' Only one choice is permitted.
- END IF
- IF RK% = 14 THEN TOFLD% = 4 ' Was SHIFT TAB
- IF RK% = 15 THEN TOFLD% = 8 ' Was TAB
- END IF
-
- SELECT CASE RK%
-
- ' RETURN CAUSED EXIT.
-
- CASE 13
- PICK$ = "ENTER"
- IF FROMFLD% >= 7 THEN PICK$ = CHNGRTRN$(FROMFLD%)
- GOTO PRINTRESULTS
-
- ' ESC CAUSED EXIT.
- CASE 27
- PICK$ = "ESC"
- GOTO PRINTRESULTS
-
- ' SPACE BAR CAUSED EXIT.
- CASE 32, 100
- IF FROMFLD% = 3 OR FROMFLD% = 4 THEN ' EXITING FIELD 3 OR 4
- IF MID$(CHNGRTRN$(FROMFLD%), 2, 1) = " " THEN
- X$ = "X"
- ELSE
- X$ = " "
- END IF
- MID$(CHNGRTRN$(FROMFLD%), 2, 1) = X$
-
- 'IF CHNGRTRN$(FROMFLD%) = "" THEN CHNGRTRN$(FROMFLD%) = "X" ELSE CHNGRTRN$(FROMFLD%) = ""
- ELSEIF FROMFLD% > 7 THEN ' EXITING FIELD 8,9,10,11
- PICK$ = CHNGRTRN$(FROMFLD%)
- GOTO PRINTRESULTS
- ELSE ' FIELD 5,6,7
- 'NOTHING
- END IF
-
- CASE ELSE
- END SELECT
-
- GOTO CHANGE
-
- PRINTRESULTS:
-
- ' PRINT THE RESULTS IN WINDOW 1. GETANS WAITS FOR ANY KEY.
- REDIM T$(9)
- T$(1) = SPACE$(55)
- T$(2) = " Find What: = " + CHNGRTRN$(1)
- T$(3) = " Change To: = " + CHNGRTRN$(2)
- IF MID$(CHNGRTRN$(3), 2, 1) = " " THEN S$ = "No" ELSE S$ = "Yes"
- T$(4) = " Match Upper/Lowercase = " + S$
- IF MID$(CHNGRTRN$(4), 2, 1) = " " THEN S$ = "No" ELSE S$ = "Yes"
- T$(5) = " Whole Word = " + S$
- SELECT CASE ONSEARCH%
- CASE 5
- S$ = "Active Window"
- CASE 6
- S$ = "Current Module"
- CASE ELSE
- S$ = "All Modules"
- END SELECT
- T$(7) = " Search Criteria = " + S$
- T$(9) = " Exit was via ...." + PICK$
- REDIM CHOICE$(1)
- CHOICE$(1) = "OK"
- PRINTINFO " Select OK to proceed..........."
-
-
- A% = CHOICEWIND%("@Results", T$(), CHOICE$(), 6, 11, 112, 112, 1, 111)
-
- SETCUR (C&)
-
- ' RESTORING WINDOW 15 RESTORES THE SCREEN TO IT'S
- ' STATE BEFORE THIS SUB WAS CALLED.
-
- RSTRWIND 15, 1
- INFOLINE 0, 0, 0, COL%(31)
-
- 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
- B4SCRL "ERM", "", 0, 0
- SCRLWIND SUBSCROLL$(), DUMMY$(), "", 5, "A", SCROLLRTRN%, 1, 1, RKEY%, HATTR%, 0, 0
- INFOFIXED ""
- RSTRWIND 4, 1 ' RESTORE SCROLL WINDOW.
- IF RKEY% = 27 THEN WASESC% = 1: EXIT SUB ' ESC
- RSTRWIND 2, 1 ' RESTORE CONNECT SOFTWARE WIND.
- RSTRWIND 1, 1 ' RESTORE MAIN INSTRUCT. WIND.
- RSTRPULL 1 ' RESTORE PULLDOWN WINDOW.
-
- 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
-
- PRINTINFO " Press the UP or DOWN arrow keys. Press ESC to exit....."
- 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
-
- RANDOMIZE TIMER ' RESET RANDOM SEED
- WIND% = 0 ' WINDOW COUNTER
-
- GETMAKE:
- TR% = INT(11 * RND + 11) ' GET RANDOM VALUE FOR TOP ROW
- LC% = INT(60 * RND + 3) ' GET RANDOM VALUE FOR LEFT COLUMN
- NR% = INT((25 - TR% - 3) * RND + 3) ' GET RANDOM VALUE FOR NUMBER ROWS
- WI% = INT((80 - LC% - 16) * RND + 16) ' GET RANDOM VALUE FOR WIDTH
- BO% = INT((2) * RND + 100) + 1 ' GET RANDOM VALUE FOR BORDER
-
- ' WAIT FOR ARROW KEY, ESC, OR MOUSE MOVEMENT WITH FUNTION GETKEY.
-
- DO
- k% = GETAKEY%
- LOOP WHILE k% = 0
- SELECT CASE k%
- CASE 27 ' ESC
- FOR XX% = 19 TO 1 STEP -1
- RSTRWIND XX%, 1 ' RESTORE ALL WINDOWS.
- NEXT
- RSTRWIND 20, 1
- EXIT SUB ' EXIT
-
- CASE 18432 ' UP ARROW - MAKE WINDOWS
- IF WIND% < 19 THEN
- WIND% = WIND% + 1 ' INCREMENT COUNTER
- A% = WIND% * 16: IF A% = 128 OR A% = 256 THEN A% = 135 ' SET COLORS
- IF A% > 127 THEN A% = A% - 128 '
- A% = COL(A%) '
- IF A% = 15 THEN IF WIND% / 2 <> INT(WIND% / 2) THEN A% = 112 ' B/W
- IF NR% < 8 OR BO% = 100 THEN BO% = BO% - 100 ' BORDER
- MAKEWIND WIND%, "@Demo Window" + STR$(WIND%), TR%, LC%, WI%, NR%, A%, BO%
- ELSE
- DOSOUND
- END IF
-
- CASE 20480 ' DOWN ARROW RESTORE WINDOWS.
- IF WIND% > 0 THEN
- RSTRWIND WIND%, 1
- WIND% = WIND% - 1 ' DECREMENT COUNTER
- ELSE
- DOSOUND
- END IF
- CASE ELSE
- END SELECT
- GOTO GETMAKE
-
- END SUB
-
-