'=========================================================================== ' Subject: WINDOW MANAGER Date: 01-27-98 (15:23) ' Author: Andrey Berezansky Code: QB, QBasic, PDS ' Origin: brznsky@cs.bgu.ac.il Packet: TEXT.ABC '=========================================================================== DECLARE SUB windows (xstart, ystart, xlong, ylong, wincol, backtype, border) ' This programm will create text windows with shadow & border on the screen ' it also will draw a background. ' ****** windows(xstart,ystart,xlong,ylong,wincol,backtype,border) ****** ' xstart , ystart - are start position on the screen 80 for x & 24 for y ' xlong , ylong - are lenght in x & y direction ' wincol - is the window color ' backtype - type of background : 1) brown ' 2) cyan ' 3) blue ' 0) none - if you already have ' border - type of border : 1) single ' 2) double ' 0) none ' IMPORTANT xstart + xlong must be lower than 80 & ' ystart + ylong must be lower than 24 ' Programed by Berezansky Andrey. email - nikol@cs.bgu.ac.il ' You may use this routine as long as you give me a credit. ' here are examples CLS ' small cyan CALL windows(30, 10, 20, 6, 3, 3, 1) ' small green CALL windows(2, 10, 20, 6, 2, 0, 1) ' small blue CALL windows(58, 10, 20, 6, 1, 0, 0) ' big red CALL windows(10, 2, 60, 4, 4, 0, 2) LOCATE 3, 33: PRINT "WINDOW MANAGER" LOCATE 5, 30: PRINT "by Berezansky Andrey" SUB windows (xstart, ystart, xlong, ylong, wincol, backtype, border) SHARED backt IF backtype > 0 THEN backt = backtype '----------------- checking out borders ------------ IF xstart + xlong > 79 OR ystart + ylong > 23 THEN PRINT "YOUR WINDOW IS OUT OF THE SCREEN - SORRY !" EXIT SUB END IF '--------------------------------------------------- '------------ background -------- IF backtype > 0 THEN IF backtype = 1 THEN COLOR 6, 7 IF backtype = 2 THEN COLOR 1, 3 IF backtype = 3 THEN COLOR 9, 1 PRINT STRING$(1920, 177); END IF '-------------------------------- '-------- the window ------------ COLOR 15, wincol IF border > 0 THEN IF border = 1 THEN LOCATE ystart, xstart: PRINT CHR$(218); STRING$(xlong - 2, 196); CHR$(191); FOR y = ystart + 1 TO ystart + ylong - 1 LOCATE y, xstart: PRINT CHR$(179); SPACE$(xlong - 2); CHR$(179); NEXT LOCATE ystart + ylong, xstart: PRINT CHR$(192); STRING$(xlong - 2, 196); CHR$(217); END IF IF border = 2 THEN LOCATE ystart, xstart: PRINT CHR$(201); STRING$(xlong - 2, 205); CHR$(187); FOR y = ystart + 1 TO ystart + ylong - 1 LOCATE y, xstart: PRINT CHR$(186); SPACE$(xlong - 2); CHR$(186); NEXT LOCATE ystart + ylong, xstart: PRINT CHR$(200); STRING$(xlong - 2, 205); CHR$(188); END IF ELSE FOR y = ystart TO ystart + ylong LOCATE y, xstart: PRINT SPACE$(xlong); NEXT END IF '-------------------------------- '------------ shadow ------------ IF backt > 0 THEN IF backt = 1 THEN COLOR 8, 6 IF backt = 2 THEN COLOR 9, 1 IF backt = 3 THEN COLOR 1, 0 END IF LOCATE ystart + ylong + 1, xstart + 2: PRINT STRING$(xlong, 177); FOR y = ystart + 1 TO ystart + ylong LOCATE y, xstart + xlong: PRINT STRING$(2, 177); NEXT '-------------------------------- COLOR 15, wincol END SUB