$CPU 8086 'make compatible with XT systems $LIB ALL OFF 'turn off all PowerBASIC libraries $ERROR ALL OFF 'turn off all PowerBASIC error checking $OPTIMIZE SPEED 'optimize for smaller code $COMPILE UNIT 'compile to a UNIT (.PBU) '$COMPILE EXE 'compile to a UNIT (.PBU) DEFINT A-Z 'Required for all numeric functions, forces PB to not 'include floating point in UNIT (makes it smaller) '/*-------------------------------------------------------------------- DECLARE SUB SAY(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, BYVAL Text AS STRING, BYVAL Attr AS INTEGER) DECLARE FUNCTION FORMAT(BYVAL NUM AS EXT, BYVAL BEF AS INTEGER, BYVAL AFT AS INTEGER) AS STRING '/*-------------------------------------------------------------------- $CODE SEG "MLIB1" '/*-------------------------------------------------------------------- ' BAR TYP,ROW,COL,LTH,C$,C2$,ATTR,ATTR2,P ' Displays a scroll bar with arrows at each end. ' TYP = Type of scroll bar ' 1 = Vertical, moving indicator ' 3 = Vertical, progression line ' 5 = Vertical, moving indicator with percent at bottom ' 7 = Vertical, progression line with percent at bottom ' 2 = Horizontal, moving indicator ' 4 = Horizontal, progression line ' 6 = Horizontal, moving indicator with percent at right ' 8 = Horizontal, progression line with percent at right ' ROW = Start Row ' COL = Start Column ' LTH = Lenght of Bar (including arrows) ' C$ = Character Used to make bar ' C2$ = Character Used as indicator or progress line ' ATTR = Color of bar, arrows and percent ' ATTR2 = Color of indicator or progression line ' P = Percent to show on bar ' EXAMPLE: BAR 8,24,1,80,CHR$(176),CHR$(176),10,12,25 ' SAMPLE CODE: ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' BARH 24,1,60,CHR$(176),10 ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) ' BAR 1,1,1,20,CHR$(176),CHR$(254),12,15,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' DO WHILE Y$ <> CHR$(27) ' BAR 3,1,1,20,CHR$(176),CHR$(176),12,10,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' DO WHILE Y$ <> CHR$(27) ' BAR 5,1,1,25,CHR$(176),CHR$(254),12,10,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' DO WHILE Y$ <> CHR$(27) ' BAR 7,1,1,25,CHR$(176),CHR$(176),12,10,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) ' BAR 2,22,1,60,CHR$(176),CHR$(254),10,15,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) ' BAR 4,24,1,71,CHR$(176),CHR$(176),10,12,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) ' BAR 6,24,1,80,CHR$(176),CHR$(176),10,12,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) ' BAR 8,24,1,80,CHR$(176),CHR$(176),10,12,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' '/*-------------------------------------------------------------------- SUB BARV(ROW%,COL%,LTH%,C$,ATTR%) PUBLIC SAY ROW%, COL%, CHR$(24),ATTR% RROW = ROW% FOR I% = 1 TO LTH% - 1 INCR RROW SAY RROW%,COL%,C$,ATTR% NEXT I% SAY RROW+1,COL%,CHR$(25),ATTR% END SUB '/*-------------------------------------------------------------------------- SUB BARH(ROW%,COL%,WIDE%,C$,ATTR%) PUBLIC SAY ROW%,COL%,CHR$(27)+STRING$(WIDE%-2,C$)+CHR$(26),ATTR% END SUB '/*-------------------------------------------------------------------------- SUB BAR(TYP%,ROW%,COL%,LTH%,C$,C2$,ATTR%,ATTR2%,P%) PUBLIC IF LTH% > 76 AND (TYP% = 6 OR TYP% = 8) THEN LTH% = 76 IF LTH% > 23 AND (TYP% = 5 OR TYP% = 7) THEN LTH% = 23 '/* PP# = ((LTH%-2) * (P%*.1)) PP# = (((LTH%-2) / 100) * P%) IF PP# < 1 THEN PP = 0 ELSE PP = CEIL(PP#) IF PP > LTH%-2 THEN PP = LTH% - 2 '/*SAY 25,60,STRING$(20,32),31 '/*SAY 25,65,STR$(PP#)+STR$(PP)+STR$(P%),31 '/* --- Vertical Bar --- IF TYP% = 1 THEN BARV ROW%,COL%,LTH%,C$,ATTR% SAY ROW%+PP+1,COL%,C2$,ATTR2% EXIT SUB END IF '/* --- Vertical Progress BAR --- IF TYP% = 3 THEN PP = PP + 1 SAY ROW%, COL%, CHR$(24),ATTR% RROW = ROW% FOR I% = 1 TO LTH% - 1 INCR RROW IF I% > PP THEN SAY RROW,COL%,C$,ATTR% ELSE SAY RROW,COL%,C2$,ATTR2% END IF NEXT I% SAY RROW+1,COL%,CHR$(25),ATTR% EXIT SUB END IF '/* --- Vertical Bar AND Percentage --- IF TYP% = 5 THEN BARV ROW%,COL%,LTH%,C$,ATTR% SAY ROW%+PP+1,COL%,C2$,ATTR2% SAY ROW%+LTH%+1,COL%,FORMAT(P%,3,0)+"%",ATTR% EXIT SUB END IF '/* --- Vertical Progress BAR AND Percentage --- IF TYP% = 7 THEN PP = PP + 1 SAY ROW%, COL%, CHR$(24),ATTR% RROW = ROW% FOR I% = 1 TO LTH% - 1 INCR RROW IF I% > PP THEN SAY RROW,COL%,C$,ATTR% ELSE SAY RROW,COL%,C2$,ATTR2% END IF NEXT I% SAY RROW+1,COL%,CHR$(25),ATTR% SAY RROW+2,COL%,FORMAT(P%,3,0)+"%",ATTR% EXIT SUB END IF '/* --- Horizontal Bar --- IF TYP% = 2 THEN BARH ROW%,COL%,LTH%,C$,ATTR% IF PP > LTH%-3 THEN DECR PP SAY ROW%,COL%+1+PP,C2$,ATTR2% EXIT SUB END IF '/* --- Horizontal Progress Bar --- IF TYP% = 4 THEN IF PP < 1 THEN PP = 1 IF PP > LTH%-2 THEN DECR PP SAY ROW%,COL%,CHR$(27),ATTR% SAY ROW%,COL%+1,STRING$(PP,C2$),ATTR2% SAY ROW%,COL%+1+PP,STRING$(LTH%-PP-2,C$)+CHR$(26),ATTR% EXIT SUB END IF '/* --- Horizontal Bar AND Percentage --- IF TYP% = 6 THEN BARH ROW%,COL%,LTH%,C$,ATTR% IF PP > LTH%-3 THEN DECR PP SAY ROW%,COL%+1+PP,C2$,ATTR2% SAY ROW%,COL%+LTH%,FORMAT(P%,3,0)+"%",ATTR% EXIT SUB END IF '/* --- Horizontal Progress Bar AND Percentage Number --- IF TYP% = 8 THEN IF PP < 1 THEN PP = 1 IF PP > LTH%-2 THEN DECR PP SAY ROW%,COL%,CHR$(27),ATTR% SAY ROW%,COL%+1,STRING$(PP,C2$),ATTR2% SAY ROW%,COL%+1+PP,STRING$(LTH%-PP-2,C$)+CHR$(26),ATTR% SAY ROW%,COL%+LTH%,FORMAT(P%,3,0)+"%",ATTR% EXIT SUB END IF END SUB '/*-------------------------------------------------------------------------- ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' BARV 1,1,20,CHR$(176),12 ' BARH 24,1,60,CHR$(176),10 ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) ' BAR 1,1,1,20,CHR$(176),CHR$(254),12,15,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' DO WHILE Y$ <> CHR$(27) ' BAR 3,1,1,20,CHR$(176),CHR$(176),12,10,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' DO WHILE Y$ <> CHR$(27) ' BAR 5,1,1,25,CHR$(176),CHR$(254),12,10,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' DO WHILE Y$ <> CHR$(27) ' BAR 7,1,1,25,CHR$(176),CHR$(176),12,10,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,80) THEN INCR P ' IF Y$ = CHR$(0,72) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' P = 1 ' Y$ = "" ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) ' BAR 2,22,1,60,CHR$(176),CHR$(254),10,15,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) '/* BARU 4,22,1,60,CHR$(176),CHR$(254),10,15,P ' BAR 4,24,1,71,CHR$(176),CHR$(176),10,12,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) '/* BARU 4,22,1,60,CHR$(176),CHR$(254),10,15,P ' BAR 6,24,1,80,CHR$(176),CHR$(176),10,12,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP ' Y$ = "" ' P = 1 ' DO WHILE Y$ <> CHR$(27) '/* BARU 6,22,1,60,CHR$(176),CHR$(254),10,15,P ' BAR 8,24,1,80,CHR$(176),CHR$(176),10,12,P ' Y$ = GETKEY ' IF Y$ = CHR$(0,77) THEN INCR P ' IF Y$ = CHR$(0,75) THEN DECR P ' IF P < 1 THEN P = 1 ' IF P > 100 THEN P = 100 ' LOOP