home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
turbobas
/
tbwind30.arc
/
TBWIND30.DOC
< prev
next >
Wrap
Text File
|
1987-08-05
|
14KB
|
463 lines
August 5, 1987
TBWINDO
MULTI-LEVEL WINDOWS
FOR BORLANDS TURBO BASIC
Version 3.0
PURPOSE:
This utility creates incredibly quick multi-level windows
in Turbo Basic programs for IBM PC/XT/AT compatibles.
TEST DRIVE:
Compile and run the tutoring program TBDEMO30.BAS to get a
feel for features and speed.
FILES:
In this version, TBWINDO.ARC contains:
TBWINDO.INC - Turbo Basic window include file
TBMENU.INC - Menu include file
QPRINT.BIN - Quick print inline subroutine
QPRINTC.BIN - Quick print between columns
QATTR.BIN - Re-attribute an area of the screen
QFILL.BIN - Fill an area of the screen with a
specified character and attribute
QSAVE.BIN - Save portion of screen
QREST.BIN - Restore portion of screen
RECOLOR.BIN - Screen area recoloring
TBDEMO30.BAS - Demonstration program source code
TBWIND30.DOC - This document file.
README.1ST - Most recent changes and corrections.
Assembly language source code for all BIN files is
included for all those interested. Any Suggestions for
improvements to the code would be appreciated, as I do not
profess to be good at Assembly language.
USING TBWINDO
Include the TBWINDO.INC program in your program with the
following statement:
$INCLUDE "TBWINDO.INC"
Set MW% variable equal to the maximum number of windows
you will have open at any one time.
- 1 -
Set the ScrnArray variable equal to the estimated total
memory required to save your screens. If you expreience a
subscript out of range error in the include file, increase
this variable. As a rough rule of thumb, start out with
the variable equal to 250 times the maximum windows (mw%)
variable.
You invoke the routines by means of a CALL with a list of
parameters, rather than a GOSUB.
Using the MAKEWINDOW procedure:
CALL
MAKEWINDOW(ROW%,COL%,ROWS%,COLS%,ATTR%,BRDRSEL%,SHADOW%,ZO
OM%)
Where: ROW - the screen row of the upper left hand corner
of your desired window. Value should be
between 2 and 23 (for reasons explained
below). WARNING - the subroutine does not
check for proper values. You must check these
yourself or accept the consequences.
COL - the screen column of the upper left hand
corner. Value should be between 2 and 79.
ROWS - the number of rows long the window should be.
COLS - the number of columns wide the window should
be.
ATTR - the attribute of the window colors.
BRDRSEL - the border you desire around the window.
Valid selections in this release are:
0 - No Frame (just a border of BACKground
color.)
1 - Single Line Frame
2 - Double Line Frame
3 - Single Horizontal Line, Double Vertical
Line
4 - Single Vertical Line, Double Horizontal
Line
SHADOW - Another "switch" to indicate if the window
should have a black "shadow" under it offset
down. This gives a three-dimensional effect
that seems to "raise" the window away from the
screen. A value of 1 indicates a shadow is
desired on the left side, a value of 2
indicates the right side, while a value of 0
- 2 -
means no shadow.
ZOOM - A "switch" used to indicate to the subroutine
if the window should "grow" from a small box
at the midpoints of the coordinates to full
size. A value of 1 indicates the window should
grow. A value of 0 indicates it should not.
using the TITLEWINDOW procedure:
CALL TITLEWINDOW(LOC%,TITLE$)
Where: LOC - Indicates where the title should be placed.
Valid selections are:
1 - Top left hand corner
2 - Top center
3 - Top right hand corner
4 - Lower left hand corner
5 - Lower center
6 - Lower right hand corner
TITLE - The string data you would like printed.
NOTE: The TITLEWINDOW procedure uses the coordinates from
the most recent use of MAKEWINDOW. Use this
procedure only after a call has been made to
MAKEWINDOW.
Using the RemoveWindow procedure:
CALL REMOVEWINDOW
There are no parameters passed to this procedure. The
window created by the last call to MakeWindow is removed
from the screen.
Using the ClearWindow procedure:
CALL CLEARWINDOW
There are no parameters pass to this procedure. The
window created by the last call to MakeWindow is cleared
inside the frame.
Using the PrtWindow procedure:
CALL PRTWINDOW(ROW%,COL%,STRDAT%)
Where: ROW - Is the row within the window you want to
print on.
- 3 -
COL - Is the column within the window where you
want printing to start.
NOTE: The ROW and COL coordinates are relative to the
current window. Row 1 Col 1 refers to the first
character position inside the frame in the upper
left corner. No parameter checking is done so if
the string data exceeds the width of the window it
will spill out the right side.
STRDAT - Is the string data you want printed inside
the window.
Using the PrtCWindow procedure:
CALL PRTCWINDOW(ROW%,STRDAT$)
Where: ROW - Is the row within the window you to have
your string data centered on.
NOTE: This procedure uses the current window and will
attempt to center the string data between the left
border and the right border. No parameter checking
is done so if the string data exceeds the width of
the window, it will spill out the sides.
STRDAT - Is the string data you want printed within
the window.
Using the FNATTR% function:
FNATTR%(FORE%,BACK%)
Where: FORE - is the foreground color. Any Turbo Basic
color number is valid.
BACK - is the backgound color. Any Turbo Basic
background color is valid.
FNATTR% returns the attribute of the colors specified.
Using the RECOLOR procedure:
CALL RECOLOR(OLDATTR%,NEWATTR%,SNOCHK%)
Where: OLDATTR - Is the attribute of the areas on the
screen you wish to change.
NEWATTR - Is the attribute of the color you want.
X% = SCREEN(1,1,1) ' RETURNS CURRENT SCREEN
- 4 -
' ATTRIBUTE
CALL RECOLOR(X%,FNATTR%(14,4))
This will recolor everything on the screen that
has the same attribute a the upper left corner of
the screen to a foreground of 14 and a background
of 4.
Using the MAKEMENU procedure:
CALL MAKEMENU
You must define several variable before you call the
MakeMenu procedure. First define the selections available
to the user in a string array named item$(). If you want
a title on your menu assign it to the variable mtitle$.
Assign the total selections available to itemcount% and
the starting selection number to startpos%. The remaining
information required is almost identical to defining
window in the MakeWindow procedure.
Where: MROW - the screen row of the upper left hand corner
of your desired menu. Value should be
between 2 and 23 (for reasons explained
below). WARNING - the subroutine does not
check for proper values. You must check
these yourself or accept the consequences.
MCOL - the screen column of the upper left hand
corner. Value should be between 2 and 79.
MWIDTH - The width of the menu. Be sure this value
is greater than the longest string assigned
to a selection.
MATTR - the attribute of the menu colors.
MHIATTR - the attribute of the moving selection bar.
MBRDRSEL - the border you desire around the menu. (See
above)
MSHADOW - Switch to indicate if the menu should have a
shadow.
MZOOM - Switch to indicate if the menu should grow.
When a selection has be made in the MakeMenu procedure the
item number selected will be assigned to the variable
curntpos%. You can now use this number to direct the flow
of you main program. Please see the source code of the
demo program for a better understanding.
- 5 -
All of the above variables with the exception of the
string variables must either be declared globally as
integers by means of a DEFINT statement early in the
program; or must have the specific integer identifier
(%) attached wherever they appear in the program. The
BASIC compiler is picky about this; so be sure to
verify that the type assignment is correct.
TBWINDO requires no special handling when it comes to
compiling your program. Just make certain that all of
your variables passing parameters to the TBWINDO
subroutine are identified as integers, and you will be
able to proceed with the compile operation as with any
other program.
ACKNOWLEDGEMENTS
I would like to express my thanks to Dave Evers
(BASWIN22), Tom Hanlin (ADVBAS33) and Jim LeMay
(WINDOW33). The routines presented are patterned after
routines that were written by them for MicroSoft Quick
Basic and Borland Turbo Pascal.
These utilities are released into the public domain for
anyone to use as they see fit however, anyone who feels
inspired and would like to contribute to my printer paper
and computer supplies fund may feel free to do so.
Rick Fothergill
141 Oak Hill Road
Pittsfield, MA 01201
(413) 442-2456
GEnie Address: R.FOTHERGILL
Compuserve: 76210,443
- 6 -
TBWINDO QUICK REFERENCE
MakeWindow(Row%,Col%,Rows%,Cols%,Attr%,BrdrSel%,Shadow%,Zo
om%)
TitleWindow(Loc%,Title$)
RemoveWindow
ClearWindow
MakeMenu
PrtWindow(Row%,Col%,StrDat$)
PrtCWindow(Row%,StrDat$)
FNAttr%(Fore%,Back%)
Qsave(Row%,Col%,Rows%,Cols%,Scrn%(??))
QRest(Row%,Col%,Rows%,Cols%,Scrn%(??))
ReColor(OldAttr%,NewAttr%,SnoChk%)
Qprint(Row%,Col%,StrDat$,Attr%)
QprintC(Row%,ColLeft%,ColRight%,StrDat$,Attr%)
QFill(Row%,Col%,Rows%,Cols%,Char%,Attr%)
QAttr(Row%,Col%,Rows%,Cols%,Attr%)
QBox(Row%,Col%,Rows%,Cols%,Attr%,BrdrSel%)
- 7 -