BBS: Inland Empire Archive Date: 07-05-92 (03:52) Number: 110 From: BILL CAMPBELL Refer#: NONE To: DOUGLAS LUSHER Recvd: NO Subj: Ray Carson's Tagmenu Conf: (2) Quik_Bas
REM Ray Carson's TagMenu
REM The selection box can be located anywhere on the screen
between rows REM 2 and 24 and can be any size. To locate
change the values of UpperRow,REM LowerRow, and LeftColumn.
Long lines were broken with an underscore.
DEFINT A-Z
DECLARE SUB TagMenu (upperrow, lowerrow, LeftColumn,
FgNormal, BgNormal, FgHlight, BgHlight, FgMarker, Keycode,
n, QtySe lected, array$(), Tagged())
REDIM array$(50), Tagged(50)
COLOR 0, 3: CLS
DEF SEG = &HB800
FOR x = 0 TO 4000 STEP 2
POKE x, 176
NEXT
DEF SEG
FOR x = 1 TO 50
array$(x) = "Item No." + STR$(x)
NEXT
n = 50
CALL TagMenu(5, 20, 32, 15, 1, 4, 7, 4, Keycode, n,
QtySelected, array$(), Tagged())
COLOR 7, 0: CLS
IF Keycode = 27 THEN PRINT "User Aborted": END
PRINT LTRIM$(STR$(QtySelected)); " items selected:"
FOR x = 1 TO n
IF Tagged(x) THEN
LOCATE , 5
PRINT array$(x)
END IF
NEXT
END
SUB TagMenu (upperrow, lowerrow, LeftColumn, FgNormal,
BgNormal, FgHlight, BgHlight, FgMarker, Keycode, n,
QtySelected, array$(), Tagged())
SelChr$ = CHR$(16)
maxlength = 0
FOR x = 1 TO n
Q = LEN(array$(x))
IF Q > maxlength THEN maxlength = Q
NEXT
COLOR FgNormal, BgNormal
LOCATE 24, 6: PRINT SPACE$(68);
LOCATE 24, 7
PRINT "<Home, End, "; CHR$(25); ", "; CHR$(24); ", Page
Up/Down> <Spacebar>Mark/Clear";
LOCATE 25, 6: PRINT SPACE$(68);
LOCATE 25, 7
PRINT "<F2>Mark All <F3>Clear All <Esc>Abort <Return>Go";
UR = upperrow - 1
LR = lowerrow + 1
LC = LeftColumn - 2
RC = LeftColumn + maxlength + 3
Top$ = CHR$(218) + STRING$(((RC - 1) - LC), 196) + CHR$(191)
Middle$ = CHR$(179) + STRING$(((RC - 1) - LC), 32) + CHR$(179)
Bottom$ = CHR$(192) + STRING$(((RC - 1) - LC), 196) + CHR$(217)
LOCATE UR, LC: PRINT Top$;
FOR Q = UR + 1 TO LR - 1
LOCATE Q, LC: PRINT Middle$;
NEXT
LOCATE LR, LC: PRINT Bottom$;
setuptagmenu:
row = upperrow: Column = LeftColumn
COLOR FgNormal, BgNormal
x = 1
DO
LOCATE row, Column
PRINT " " + array$(x) + SPACE$(maxlength - LEN(array$(x))) + " ";
RowI = row
GOSUB CheckTagged
row = row + 1
IF row = lowerrow + 1 THEN EXIT DO
x = x + 1
LOOP UNTIL x > n
row = upperrow
x = 1
COLOR FgHlight, BgHlight
LOCATE row, Column
PRINT " " + array$(x) + SPACE$(maxlength - LEN(array$(x))) + " ";
GetKey:
DO
k$ = INKEY$
LOOP UNTIL LEN(k$)
Keycode = ASC(k$)
IF LEN(k$) = 2 THEN Keycode = ASC(RIGHT$(k$, 1))
IF Keycode = 13 OR Keycode = 27 THEN 'Return or Escape
COLOR FgNormal, BgNormal
LOCATE row, Column
PRINT " " + array$(x) + SPACE$(maxlength - LEN(array$(x))) + " ";
COLOR 7, 0
EXIT SUB
END IF
--- Maximus 2.00
* Origin: Durham Systems (ONLINE!) (1:229/110)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET