home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
- 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 -
-
-
-