home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-387-Vol-3of3.iso
/
t
/
tbwindow.zip
/
TBWIND32.TXT
< prev
next >
Wrap
Text File
|
1987-09-29
|
14KB
|
463 lines
September 29, 1987
TBWINDO
MULTI-LEVEL WINDOWS
FOR BORLANDS TURBO BASIC
Version 3.2
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 TBDEMO32.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
TBINPUT.INC - Structured input 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
TBDEMO32.BAS - Demonstration program source code
TBWIND32.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 want 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.
- 4 -
X% = SCREEN(1,1,1) ' RETURNS CURRENT SCREEN
' 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 WINDOWXY procedure:
CALL WINDOWXY(ROW%,COL%)
Where: ROW = The row within the window.
COL = The column within the window.
This procedure is similar to Basic's LOCATE command except
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 it is possible to locate
outside the window.
Using the MAKEMENU procedure:
Define and title your menu with calls to MakeWindow and
TitleWindow. Then define the selections available to the
user in a string array named item$(). Assign the total
selections available to itemcount% and the starting
selection number to startpos%. Now CALL MAKEMENU.
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. One point to
remember is that a MENU window is no different than any
other window. You can pop one over the other and remove
them as would a normal window.
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
- 5 -
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
BBS: (413) 499-7245 300-1200-2400 Baud N-8-1
8:00am - 4:00pm Monday through Friday
- 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%)
WindowXY(Row%,Col%)
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 -