home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 19
/
CD_ASCQ_19_010295.iso
/
dos
/
prg
/
builder
/
builder.doc
< prev
next >
Wrap
Text File
|
1994-10-26
|
240KB
|
4,865 lines
Page: 1
Aeolus Software
BUILDER REFERENCE GUIDE
COPYRIGHT
c 1992, 1993, 1994 by Aeolus Software
All rights reserved.
Aeolus Software
P.O. Box 11915
St. Paul, MN 55111-0915
(612) 730-4135
Mark H. Kania, CIS# 76270,2436 Page: 2
Contents
PREFACE: . . . . . . . . . . . . . . . . . .4
INTRODUCTION:. . . . . . . . . . . . . . . .5
INSTALLATION:. . . . . . . . . . . . . . . .6
GETTING STARTED: . . . . . . . . . . . . . .8
MAIN MENU. . . . . . . . . . . . . . . . . 15
CHANGE WINDOW. . . . . . . . . . . . . . . 16
ADD WINDOW . . . . . . . . . . . . . . . . 19
ADD WINDOW - DIALOG BOX. . . . . . . . . . 22
ADD WINDOW - FILE MAINTENANCE. . . . . . . 25
ADD WINDOW - PICK LIST . . . . . . . . . . 28
ADD WINDOW - COPY WINDOW . . . . . . . . . 32
ADD WINDOW - HAND CODE. . . . . . . . . . 34
ADD WINDOW - TBROWSE . . . . . . . . . . . 36
ADD WINDOW - REL MAINT . . . . . . . . . . 42
OPTIONS. . . . . . . . . . . . . . . . . . 46
FILES. . . . . . . . . . . . . . . . . . . 47
FILES - EDIT DATABASES USED. . . . . . . . 48
FILES - MODIFY/CREATE STRUCTURE. . . . . . 50
FILES - DATA DICTIONARY. . . . . . . . . . 53
FILES - DATA DICTIONARY - Edit Data Dictionary .55
FILES - DATA DICTIONARY - Edit Data Dictionary - Additional Items 58
MODE . . . . . . . . . . . . . . . . . . . 66
ADDITIONAL ITEMS MENU. . . . . . . . . . . 67
ADDITIONAL ITEMS MENU - VALID. . . . . . . 68
ADDITIONAL ITEMS MENU - VALID - Pick List Validate . . . . . .70
ADDITIONAL ITEMS MENU - VALID - Check Character(s) . . . . . .72
ADDITIONAL ITEMS MENU - VALID - Field Required 74
ADDITIONAL ITEMS MENU - VALID - Duplicate Check 75
ADDITIONAL ITEMS MENU - VALID - In a File Validate . . . . . . 77
ADDITIONAL ITEMS MENU - VALID - Generic Valid. 79
ADDITIONAL ITEMS MENU - VALID - Right Justify Field. . . . . . 80
ADDITIONAL ITEMS MENU - VALID - Comment Only . 81
ADDITIONAL ITEMS MENU - IMPORT . . . . . . 82
ADDITIONAL ITEMS MENU - EDIT HELP. . . . . 84
ADDITIONAL ITEMS MENU - DELETE . . . . . . 85
CROSSHAIRS . . . . . . . . . . . . . . . . 86
F1 HELP SYSTEM . . . . . . . . . . . . . . 87
F3 HELP SYSTEM . . . . . . . . . . . . . . 91
DEFAULT OPTIONS AND HELP.. . . . . . . . . 92
CONVERTING FROM BUILDER 1.0 OR 2.0 . . . . 94
SUGGESTIONS. . . . . . . . . . . . . . . . 95
APPENDIX A - How to Operate Generic File Maintenance Windows. 98
APPENDIX B - The Generated Source Code . . 99
Page: 3
APPENDIX C - Files Created by BUILDER. . .110
Page: 4
PREFACE:
This manual is a guide for users of the Aeolus BUILDER and
the Aeolus Function Library. The BUILDER is an easy to use
interactive program prototyper and Clipper source code
generator. The Function Library is a set of Clipper source
code functions and procedures that automate much of the rote
work of Clipper programing. It has been my experience that
a knowledgeable user of these tools can easily cut the work
involved in a project by at least of 80%.
This product is designed for the experienced Clipper
programmer. BUILDER creates incomplete source which
requires completion. It is designed only to generate the
time-consuming rote programming tasks almost every project
has in abundance. The user of this product must also be
competent at using the MS-DOS/PC-DOS operating system.
Clipper programmers of all experience levels can use
BUILDER, BREPORT and the BUILDER Function Library. Less
experienced programmers will find many useful examples of
modular coding technique in the source generated by
BUILDER. Experienced programmers will like these tools
because they free you from the time-consuming tasks that
take a large part of a your time and allow more concentra
tion on the shorter but more involved areas of a program.
Page: 5
INTRODUCTION:
The Aeolus BUILDER, BREPORT and the BUILDER Function
Library. The BUILDER is an interactive program prototyper
and Clipper source code generator which allows you to create
a nearly complete text based windowing application which
includes a drop down menu system plus Dialog, Pick-list,
File Maintenance, TBrowse, and Relation Maintenance type
windows. There is also the ability to place your own source
code in BUILDER programs using Hand Code sections. The
windows are placed on the screen in a logical cascading
fashion but may be sized or moved anywhere on the screen
easily. All the display and input fields inside the window
can also be moved or changed. The BUILDER includes the
ability to create .DBF database structures and set the
screen colors for your application. When the prototype is
complete, selecting the Generate Source Code menu option
will create Clipper source code that uses the Aeolus
Function Library which provides useful example code.
BREPORT is an easy to use Clipper source code generator for
creating Clipper report source code. The Function Library
is a set of high level Clipper functions which were
developed over a period of several years by a consultant
based on the needs of real applications in the real world.
See the Function Library Reference Guide for detailed
information on how to use all the tools provided in the
Function Library.
The Aeolus BUILDER, BREPORT and Function Library used by an
experienced user should easily cut a project by 75% to 85%
in some instances. Using the prototyper a programmer, in a
matter of minutes, can show an end user the general look and
feel of the application she/he is creating. This ability to
show a user what a program is like to operate before the
first line of code is written is valuable in mapping out
changes before any significant effort is expended, which
would otherwise make changes difficult. When the design is
complete 80% to 99% of the source code is generated by
BUILDER, the programmer simply completes the system. Often
only tying up loose ends. Since the BUILDER creates most of
the source code there will be fewer bugs, since the user has
already "played" with the prototype they will want fewer
changes. Everybody Wins!!
Page: 6
INSTALLATION:
System requirements:
To install the Aeolus BUILDER on your computer you will need
an IBM compatible computer operating under MS-DOS or PC-DOS
version 3.3 or higher.
You will also need a Clipper compiler, either Summer '87 or
Version 5.x.
The BUILDER will require that your PC has 512K of RAM free
when it is run.
It is only recommended you use BUILDER on computers with a
hard-disk.
Copy and uncompress the files on the distribution disk into
an empty subdirectory. (C:\BUILDER for example)
If you are installing BUILDER to be used with Clipper
version 5.2, type
BINSTLC52 <directory-name>.
If you are installing BUILDER to be used with Clipper
versions 5.01 through 5.1, type
BINSTLC50 <directory-name>.
When installing BUILDER for use with any 5.x version of
Clipper, include the name of the subdirectory where the BIN,
OBJ, LIB, INCLUDE, SOURCE, and PLL Clipper subdirectories
are located. Your command line for installing BUILDER for
use with Clipper version 5.2 would look something like:
BINSTL52 \CLIP52\
Note: The trailing backslash IS required!
If you are still using the Summer '87 version of Clipper,
type
BINSTLS87 <directory-name>.
For Installing Builder for Use With Clipper Summer '87...
Be sure to include the name of the subdirectory where the
file CLIPPER.EXE is located. Put a trailing backslash on
the subdirectory name also! Your install command would look
something like:
BINSTL87 \CLIPS87\
General Note for Summer '87 Users: >>> On the command line
for your linker or in you .LNK file, be certain that
BUILDER.LIB is referenced BEFORE EXTEND.LIB. If this is not
done the linker will report 'Undefined Symbols Exist'. for
Page: 7
example:
Using PLINK86 as an example the following will work-
SET LIB=\CLIPPER\
PLINK86 FI MYPROG LIB CLIPPER,BUILDER,BLDRASM,EXTEND
It works because BUILDER comes before EXTEND and the
following will produce errors:
SET LIB=\CLIPPER\
PLINK86 FI MYPROG LIB CLIPPER,EXTEND,BUILDER,BLDRASM
WARNING TO ALL BUILDER USERS!!!
_______________
DO NOT UNDER ANY CIRCUMSTANCES PUT BLDRASM.LIB FUNCTIONS IN
AN OVERLAY!!! YOUR SYSTEM WILL CRASH!!
Page: 8
GETTING STARTED:
General Notes:
At all times while operating the BUILDER program the bottom
line on the screen will contain the allowable keystrokes and
their function. Remember to look at the bottom line of the
screen whenever you don't know what to do next!
Upon initially executing the BUILDER program you will be
presented with this screen which sets the startup options
for the application you will create. All the information
entered here is also available from the BUILDER main menu,
so no need to panic about mistakes.
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░╔════════════════════════════════════════Page 1 of 4═╗░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Enter Information About New Application ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Author ████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Company Name: ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ ██████████████████████████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Network (Y/N) N ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Screen Heading (Y/N) Y ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Application Name: (if Screen Heading is YES) ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ ██████████████████████████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Exploding Windows? (Y/N) N ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ Program Filename ████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░╚════════════════════════════════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down-Prv/Nxt Field ▓ PgUp/PgDn-Prv/Nxt Page ▓ Enter Changes ▓ ESC-Exit ▓
his is the OPTIONS screen. All values entered here will be
available for changes on the "Options" main menu option.
There are four screen pages with many options. All the
options from these screens are listed below.
Author - Enter your name, the name will be used in the in
stream source code comments only.
Company Name - Enter the company whose name should appear on
the copyright notice in the source code comments and on the
screen heading.
Network (Y/N) - If you are creating a multi-user application
to be run on a local area network enter Y at the "Network
(Y/N)" field otherwise enter N.
Options screen - page 1.
Screen Heading (Y/N) - If you want a screen heading that
displays the company name and the application name enter Y
Page: 9
here. Enter N to turn this off.
Application Name - Enter the application name that will
appear on the screen heading and in the source code comments
copyright notice.
Exploding Windows? (Y/N) - Enter Y for all windows that
appear to start small and grow until their correct size.
Enter N for window to pop onto the screen.
Program Filename - Enter the filename of the application to
create. You may enter a filename extension if you like but
.PRG will not be accepted. The default extension is .PR1.
You may specify an different drive/path also.
Options screen - page 2
Incorporate Help System - Enter a Y here if you want your
application to have an F1 HELP system incorporated. Press N
otherwise. Note that even though you specify NO you do not
want a help system, you will still be able to key in help
screens. See the section entitled "F1 Help System" in this
manual for more information.
Maximum Help Text Lines - Enter a number in the range 0-999
for the maximum lines of text allowed to be entered into a
single help screen. A value of 0 (zero) will allow entry of
up to 64KB, or an out of memory error occurs!
Printer Port - This field has two uses. One, to set the
printer port for the application you create and, two, any
printing BUILDER does will be sent to this port also. You
will want to remember this if you are having trouble
printing in BUILDER or your application.
Generate Clipper ver 5.x source? (Y/N) - Enter Y and BUILDER
will generate source code compatible with Clipper versions
5.01 through 5.2. Enter N for Summer '87 source output.
If 5.x source, use mouse routines? (Y/N) - If you will be
generating Clipper 5.x source for your applications and you
want your application to be navigated using a mouse, enter
Y. Enter N and mouse input will not be accepted.
If 5.x source, Dialog Scoping? (L/P) - When you create
BUILDER Dialog boxes, often you will also need to use memory
variables. Enter L to create LOCAL and P to create PRIVATE
Dialolg memory variables. LOCAL variables are preferred,
but PRIVATEs are easier to work with.
Tab Size for Source Code Indentation? - Enter a number
between zero and nine here. This will be the number of
characters indented for each control structure in the
Page: 10
generated source code. A value of zero will be treated as
three.
Create *.BK? Builder Back Up Files? (Y/N) - When BUILDER is
started and this option is set to Y, all the BUILDER *.BL?
files will be copied to *.BK? for back up. Enter N and the
files will not be backed up.
CONFIRM Setting? (Y=ON/N=OFF) - Enter a Y and the Clipper
command
SET CONFIRM ON
will be placed in your source code. Enter N and the
command entered will be
SET CONFIRM OFF
Options screen - page 3
Date Format? (A,N,B,F,G,I,J,U) - Enter a value from the
following table to set the date format in your application.
BUILDER will enter a SET DATE TO ... command according to
your response.
Field Entry Date Format
------------ --------------
A AMERICAN
N ANSI
B BRITISH
F FRENCH
G GERMAN
I ITALIAN
J JAPAN
U USA
CENTURY Setting? (Y=ON/N=OFF) - Enter a Y for BUILDER to
enter a
SET CENTURY ON
in your application initialization. Enter N and
SET CENTURY OFF
will be entered.
EPOCH Setting (Year)? - The default value will be the
current year minus 30 years. This should work for almost
all applications. The Clipper command
SET EPOCH TO <year>
will be entered with <year> set to the value entered here.
Error System? [C]clipper or [B]uilder - Enter C for the
standard Clipper error message followed by a traceback.
Enter B and the BUILDER error system will be used. The
BUILDER error system can be set to send output to a file or
to the screen. The error message box that appears can be
removed using the mouse, the Clipper box cannot. Note that
this has no effect on Summer '87 code.
Page: 11
If Using the Builder Errorsys, Output to: [S]creen or [F]ile
- Enter S and the error system will function similar to the
Clipper error system, with a message followed by a
traceback. Enter F and the error message box will be
followed by another message box that reads the error
information was placed in the file BLDRERR.DBF. BLDRERR.DBF
fields will be populated with the error date and time, a
screen image, and the traceback information.
Your Linker Name? - BUILDER uses this information to create
a make (.rmk) file. Make files are only created when one
does not exist - BUILDER will not overwrite a make file.
Options screen - page 4
Window Style for Non-Menu Windows (==, --, =-, -=, 3+, 3-,
or blank) - Enter the window style you prefer for your non-
menu applicatoin windows. Enter == for a double border, --
for single, =- for double horizontal and single vertical, -=
for single horizontal and double vertical, 3+ for 3D
'outtie', 3- for 3D 'innie'. Enter any other characters and
the first character will be the horizontal border character,
the second the vertical.
Window Style for Menu Windows (==, --, =-, -=, 3+, 3-, or
blank) - Enter the window style for menu windows here. The
styles available are the same as for non-menu windows. See
the preceeding paragraph for allowable values.
Menu Style? (B, P, or W) - Enter B for a bar drop down menu
system where the root menu items are located on a horizontal
bar with sub-menus that drop down. Enter P for a pop-up
menu system where all system menus are vertical, and the
root menu is placed in the center of the screen. Enter W
for a window drop down menu system where the root menu is a
horizontal menu contained in a window the width of the
screen with sub-menus that drop down.
Put Shadows on Menu Windows? (Y/N) - Enter Y for menu
windows to be displayed with shadows. Enter N for menu
shadows to not be displayed.
Builder Screens Color - Enter a valid Clipper color string
here for the color setting of the Builder menus and screens.
After the initial startup options are entered BUILDER will
place you in a window in which to create the root menu of
your application. Although you may move around the BUILDER
menus and do other tasks at this time, BUILDER will force
you to add a root menu.
Page: 12
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║█Menu███████║t Builder 2.2 Application ║
╚══════════════║ Pick List ║══════════════════════════════════════════════════╝
░░░░░░░░░░░░░░░║ Dialog ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ File ╔═══════════════════════════════════════════╗░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Copy ║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚══════║ Edi╔═ ADD/CHG MENU ═══════╡Record: 1 of 0╞════╗░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░╚════║ MENU LABEL: ║░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
To do this enter a menu label. Press the PgDn key to save
each label, when finished press the ESC key until the
BUILDER menu (bar menu on the top line of the screen)
disappears. You will then see the prototype of your newly
created root menu.
Note to the curious:
While entering menu labels you may notice that the ADD/CHG
MENU window top border reads Record 1 of 0, and conclude
that this is confusing and illogical. In all the BUILDER
file maintenance routines when the first number is one
greater that the second that means you are in ADD mode and
that you are working on a record that currently does not
exist.
After entering your root menu labels and ESCaping to the
prototype your screen should look something like following
[Post Initialization] screen .
Page: 13
╔══════════════════════════════════════════════════════════════════════════════╗
║ Aeolus Software ║
║ Test Builder 2.2 Application ║
╔══════════════════════════════════════════════════════════════════════════════╗
║ █Maintenance█ Process Reports ║
╚══════════════════════════════════════════════════════════════════════════════╝
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Arrows-Move Pointer ▓ ENTER-Next or Add Window ▓ F1-Builder Menu ▓ ESC-Exit ▓
When you exit to DOS and re-enter the BUILDER you will be
presented with the root menu of your application prototype
thus bypassing the startup options you have already entered.
Notice three things at this point. One, you are now
operating a prototype of the application being created and
the menus function very similar to the actual application.
Two, you can get back to the BUILDER menu by pressing the F1
key (see the bottom line of the screen). Three, if you want
to add a submenu or sub-window press ENTER on a menu option
where you want a window added, the BUILDER Add Window menu
is automatically presented, if you are in Prototype mode a
message box will be displayed indicating the desired menu
option is not installed.
Let's say that you now want to add a submenu or sub-window
to the 'Maintenance' menu option on the example application.
Pressing ENTER with the menu bar positioned on the
'Maintenance' label will bring up the BUILDER Add submenu,
as in the following screen.
Pressing ENTER on any of your menu options or windows will
bring up the next window of your logic chain. If you are at
the at the end of the logic chain, the BUILDER "Add Window"
menu is presented. This is how you build your application
prototype, by simply pressing ENTER on one of your menu
options or a prototype window with nothing following and
adding new windows to the chain.
Page: 14
That is the basics of prototype operation. Each BUILDER
option will now be explored in detail.
Page: 15
MAIN MENU
To make changes to your application prototype, access the
BUILDER main menu by pressing the F1 key. A menu bar will
be placed on the top of the screen overlapping the prototype
screen. See the following screen sample.
█Change Window█ Add Window Files Options Colors Mode About Exit
║ Aeolus Software ║
║ Test Builder 2.2 Application ║
╔══════════════════════════════════════════════════════════════════════════════╗
║ █Maintenance█ Process Reports ║
╚══════════════════════════════════════════════════════════════════════════════╝
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit to Prototype ▓
Move the cursor using the left and right arrow keys and
press ENTER to select an option or press ESC from the
BUILDER main menu to return to your prototype.
Select from these options:
Change Window - move/size windows, move/change text in
windows
Add Window - put a new Menu/Dialog/Picklist/File
Maintenance window, or Hand Code on the BUILDER prototype
Files - modify the database list for program,
modify database structures, data dictionary, or generate
source code
Options - modify screen heading/network/program name
options
Colors - modify the screen colors for the program
you are creating
Mode - select between "Development" and "Prototype"
BUILDER operating modes
About - A display only window showing the program
name, version number, author and company name.
Exit - Exit to DOS
Page: 16
CHANGE WINDOW
Selecting the Change Window main menu option will bring down
a submenu of four choices. As in the following screen
sample.
█Change Window█ Add Window Files Options Colors Mode About Exit
╔═══════════════╗ Aeolus Software ║
║█Move Window███║ Test Builder 2.2 Application ║
║ Size Window ║══════════════════════════════════════════════════════════════╗
║ Move Elements ║ance█ Process Reports ║
║ Edit Elements ║══════════════════════════════════════════════════════════════╝
╚═══════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit ▓
Changes will be made to the topmost or current window
selected in the application prototype.
Move Window:
Selecting the "Move Window" menu option will cause the
BUILDER menus to disappear and display only the prototype.
The arrow keys will be enabled and pressing any of the four
arrow directions will move selected window in that
direction. When the window is positioned where you want it
press ESC or ENTER and the Change Window submenu will
reappear.
You may also use Home and End to move the window to the
leftmost and rightmost screen positions. TAB and Shift+TAB
will move the window right or left 4 character positions at
a time.
Size Window:
The Size Window option will cause the BUILDER menus to
disappear also, however, now the arrow keys will change the
size of the selected prototype window. Again press ESC or
ENTER to return to the Change Window submenu.
You may also use TAB and Shift+TAB to size the right border
Page: 17
4 character positions at a time. Pressing Ctrl+right arrow
will move the right border to its rightmost screen position,
Ctrl+PgDn will move the bottom border to the bottommost
position on the screen.
Move Elements:
The "Move Elements" option will cause the BUILDER menus to
disappear and highlight a window element. On menus this
will be a menu label, on dialog windows or file maintenance
windows it will begin with a display element, TBrowse,
Picklist and Hand Code windows have no movable elements and
will display an error message. Press the arrow keys to move
the element to the desired location within the window, the
BUILDER will prohibit you from moving it outside the window
boundaries. Press the PgUp and PgDn key to highlight the
previous and next window element. If you are moving a
display element of a dialog or file maintenance window,
pressing the TAB key will highlight the 'GET' element
associated with that display element and allow you to move
it, pressing TAB again selects the display element again.
The Home/End keys will move the currently selected element
to the leftmost/rightmost screen positions. Pressing the
Ctrl+PgDn key combination will move all window elements at
the current location and below to be moved down one line,
Ctrl+PgUp will move the elements at or below the current
location up one line. Moving a GET field so that it 'hangs
off' the right window border will create scrolling fields in
the generated source, a PICTURE "@Snn ... will be created
for these fields.
A message will be displayed on the bottom edge of the window
indicating the row and column position of display element
and the row, column, and size of GET element. The row and
column coordinates will be relative to the top and left
window borders, therefore the display reads WROW-nnn WCOL-
nnn.
Edit Elements:
The Edit Elements option allows you to add, change, or
delete window elements. When selected an edit window
exactly like the one used to Add the window will be
presented which will allow you to change or delete any
existing window element or add new elements. Deleting all
the elements in a window will delete the window.
If you delete a window that has sub-window(s) attached to
it, you will create a 'hole' in your application chain. You
can add another window to fill this hole. If you want to
delete an entire string of windows, either start from the
bottom window and work up, or delete in the source code
Page: 18
after it has been generated.
Note that if you delete an entire menu window, you may have
many 'branches' following the 'hole' in your application
prototype. These 'orphaned' windows will still be created
when the source code is generated.
Page: 19
ADD WINDOW
There are two ways to add new windows, a window can either
be appended (normal) or inserted. BUILDER will ask you if
you want to insert when an insert condition occurs.
If you accessed the BUILDER main menu by pressing the F1 key
and then selected the Add Window option on a window other
than the root menu you will be presented with a prompt
asking if you want to insert a window. If you answer Yes to
the prompt the Add Window submenu will be presented. Adding
a window will insert it between the last selected window and
the window previous to it (Behind the current window).
This message is displayed when the "Add Window" menu
selection is made manually from the BUILDER main menu.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════════════════╗olus Software ║
║ ║ ║der 2.2 Application ║
╔════════║ Cannot Append Window ║════════════════════════════════════════════╗
║ ║ Insert Window? (Y/N) ║ Process Reports ║
╚════════║ ║════════════════════════════════════════════╝
░░░░░░░░░╚════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit to Prototype ▓
Page: 20
ADD WINDOW - MENU
Select the "Menu" options from the "Add Window" sub-menu to
add a new menu to your application prototype. As in this
screen.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║█Menu███████║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ TBrow╔═══════════════════════════════════════════╗════════════╝
░░░░░░░░░░░░░░░║ File ║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Rel M║ Edit Help: N ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Hand ╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Copy Wndw ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter Procedure Comment ▓ ESC-Exit ▓
Comment - Enter a comment in this field. The comment should
be descriptive of the menus function. Although optional,
window comments will prove extremely useful after you
generate the source.
Edit Help - This field should be left alone when adding a
menu, this is used during "Change Window" and will allow the
creation of a help screen for the menu.
When the following screen is presented, enter each menu
label. Press the PgDn key after each menu label is entered
to save. Press PgUp/PgDn to view the previous/next menu
labels for the current menu. Press ESC when finished and
the new menu will be created and displayed.
Page: 21
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║█Menu███████║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ TBrow╔═══════════════════════════════════════════╗════════════╝
░░░░░░░░░░░░░░░║ File ║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Rel M║ Edi╔═ ADD/CHG MENU ═══════╡Record: 1 of 0╞════╗░░░░░░░░░
░░░░░░░░░░░░░░░║ Hand ╚════║ MENU LABEL: ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Copy Wndw ║ ████████████████████████████████████████ ║░░░░░░░░░
░░░░░░░░░░░░░░░╚═══════════║ ║░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
You can add a horizontal bar across the window border of a
menu if the menu pads are aligned vertically. To add these
menu separators change the window size and move the menu
elements so that there is a blank line between two menu
options. Builder will detect this and automatically add a
separator bar to your menu when the menu is redisplayed.
Page: 22
ADD WINDOW - DIALOG BOX
Selecting a dialog box as the next window to add will
present the dialog initialization window. The following
screen sample shows this.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║█Dialog█████║ Process Reports ║
╚══════════════║ TB╔══════════════════════════════════════════════╗════════════╝
░░░░░░░░░░░░░░░║ Fi║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Re║ Message Line: ██████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Ha║ Edit Help: N ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Co╚══════════════════════════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter Procedure Comment ▓ ESC-Exit ▓
Comment - Be sure to enter a window comment on all BUILDER
windows, these will make it easier for when you need to edit
the source code.
Message Line - Enter the text you want your users to see on
the bottom screen line when this window is on the screen in
this field. BUILDER will prefix your entry with "_", and
suffix it with "_ ESC-Exit _" when the source code is
generated.
Edit Help - Every BUILDERed application has a HELP file,
entering Y in the "Edit Help" field allows editing of this
data. Note, however, you cannot "Edit Help" from the "Add
Window" BUILDER main menu option.
After the initialization window is filled out, the element
entry window is presented. Page: 23
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║█Dialog█████║ Process Reports ║
╚══════════════║ TB╔══════════════════════════════════════════════╗════════════╝
░░░░░░░░░░░░░░░║ Fi║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Re║ Mes╔═ DIALOG ═════════════╡Record: 1 of 0╞════╗░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Ha║ ║ Display Text: ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Co╚════║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚════════║ Enhanced Color?: N (Y/N) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ GET var: ██████████ Length: ██0 ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Picture: ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize?: N (Y/N) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize to: ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░╚═╡F10-Addtional Items╞════════════════════╝░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
None of the entries in this window are required, however,
one of either "Display Text" or "GET var" must be entered.
Display Text - This field is optional, however, if left
blank will caus the "GET var" field to be required. Enter
text to be displayed in the dialog box here.
Enhanced Color? (Y/N) - If Y will display the "Display Text"
field in the "Window Message" color instead of "Window
Normal" - see the section on "Colors" for more information
about these color settings.
GET var - Enter a variable name for GET type keyboard
entry. This field is requried unless the "Display Text"
field is non-blank. Note that the only reliable way to GET
database field variables is to use the "Import" option from
the "Additional Items" menu! Simply entering a field
variable will not work. If you enter a value in this field
by hand, a memory variable will be created.
Length - Enter the byte length of the GET variable, if
entered, in the "Length" field.
Picture - If you want a PICTURE clause added to your GET,
enter a valid Clipper PICTURE (either with or without
quotes) in the "Picture" field.
Enter "@MEMO" here if the "GET var" is a memo data type (no
quotes all caps).
Enter '@MENU:{"prompt1","prompt2",...,"promptn"}' to create
a 'Menu' GET (leaving out the two single quotes). All menu
Page: 24
GETs will be positioned across the screen (horizontal), the
length will be computed and the field presented on the
BUILDER screen with the correct size. The "GET var" for a
'Menu' GET must be a character or numeric data type ONLY.
The menu code will read the data type and return the menu
selection based on the data type.
Enter '@DROPDOWN:{"Entry1","Entry2",...,"Entryn"}' here to
create a dropdown list box GET (leaving out the two single
quotes). The length of the display will be determined as
the length of the longest array element. The GET variable
MUST be a numeric data type! The value placed in the "Get
var:" will be the array element number selected. When the
drop down listbox has GET focus the up/down arrow keys will
not move to the previous/next get but instead will move
through the array selections. Use the TAB/Shift+TAB to move
between fields. Also the Alt+DownArrow key or clicking on
the arrow button will display the drop down listbox.
WARNING: Summer '87 Users WILL NOT be able to use the
Builder @MENU!!
Initialize? - If you want the GET variable initialized
before the READ is executed enter a Y here.
Initialize to - Enter the value with which to initialize the
GET var. In this field you may enter a literal value or a
function, like "MIKE JENSEN" or SPACE(25) for example.
See the section entitled 'Dialog Box/File Maintenance
Additional Items' for information about entering Valids,
Editing Help Text, Importing screen items from a database,
and Deleting an entire window.
Page: 25
ADD WINDOW - FILE MAINTENANCE
Selecting Add File Maintenance window will first present the
file-maintenance initialization window which asks what
database file is to be maintained and other pertinent
information. It is usually best to create your databases
before creating File Maintenance windows. (see the section
under Files/Creating-Modifying Databases).
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ ╔══════════════════════════════════════════════╗══════════════╝
░░░░░░░░░░░░░░░║█║ Select File: █████████ Index Order: █0 ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ Menu Options: ACDF ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚═╚══════════════════════════════════════════════╝░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter Alias to Select for File Maintenance and the Proc Comment ▓ ESC-Exit ▓
Select File - Enter a database alias here. Press enter with
this field empty to be presented a picklist of .DBF files in
the current DOS directory.
Index Order - If the "Select File" can be located in the
files list for your application, the message "F10 - Index
List" will be displayed on the bottom window border. Enter
the index order number to be used when the file maintenance
is executed. Press F10 to select an index order from a
picklist if the message is displayed.
Menu Options - Enter "ACDF" to include all file maintenance
menu options. These stand for "A" - Add, "C" - Change, "D"
- Delete, "F" - Find. Remove any to customize user access
to the data. Leaving this field blank will place only the
"Find" menu option on the file maintenance. Note that these
selections are made in the generated source code only and
will not be visible on the BUILDER prototype screens.
Comment - Always be sure to enter the window Comment as this
will make your source code much more readable!
Entering elements for a file maintenance window:
Page: 26
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ ╔═════════════════════════════════════════════╗═══════════════╝
░░░░░░░░░░░░░░░║█║ Select File: TEST████ Index Order: 1 ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ ╔═ FILE MAINT ══════════╡Record: 1 of 0╞════╗░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ ║ Display Text: ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ ║ █████████████████████████████████████████ ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚═╚═║ Picture: ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ █████████████████████████████████████████ ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ Key Field: N (Y/N) ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ Field Name: ████████ ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ Field Type: █ (C,N,D,M) ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ Field Length: ██0 (1-255) ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ Field Decimal: ██0 ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ Format Code: █ [M]emo [P]hn [S]sn [Z]ip║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░╚═╡F10-Additional Items╞════════════════════╝░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
The bottom border of the window has a message that reads
"F10-Additional Items". If you press F10 and select "Import"
from the menu displayed, you will be able to add Display/GET
data to your window directly from either a .DBF database
file (one reason why it is better to create your databases
first) or the Builder data dictionary. See the "Additional
Items" chapter in this manual for detailed information on
the "Additional Items" menu.
Display Text - Enter any display text associated with the
field in the Display Text field; you can use any text upper
or lower case. You may leave the display text blank if you
like, but either "Display Text" or a GET field must be
entered.
Picture - If the field requires a PICTURE enter a valid
Clipper PICTURE here.
If the "Field Type" is Memo, either enter "@MEMO" here (no
quotes) OR enter and "M" in the "Format Code" field.
To create a 'Menu' type GET, Enter
@MENU:{"prompt1","prompt2",...,"promptn"}' (without
surrounding single quotes). The "Field Type" must be either
character or numeric to use the "@MENU".
You may also create a drop down listbox GET by entering
'@DROPDOWN:{"Entry1","Entry2",...,"Entryn"}' (without the
single quotes). The "Field Type" MUST be numeric to use
this option! The value placed into the field will be the
array element number of the item selected. When the GET
focus is on a Builder drop down listbox, the up/down arrows
will not move the GET focus, use TAB and Shift+TAB instead.
Also the Alt+DownArrow key or clicking on the down button
will show drop down the list.
Page: 27
Note: @MENU and @DROPDOWN are NOT available to Summer '87
Users!!
Key Field - All fields identified with the "Key Field" entry
equal to "Y" will be positioned as the first fields in the
File Maintenance window and no duplicates (assuming the
fields match by the index) will be allowed. If there are no
"Key Field" entries equal to "Y", the "File Maintenance"
window source code will be generated to allow duplicates.
The Field Name, Type, Length and Decimal are used to
determine the name of the GET field variable, the validity
of any Format Codes used, and the size the window is
required to be. (That is why it is best to get these fields
directly from a database - see F10 key explanation above)
These entries should exactly match those on the database
structure.
Format Code - You can automatically format a field on your
File Maintenance window using one of the four Format Codes.
Format Code > > must have > > > Field Type Field
Size Creates
M - Memo M 10 a Y/N field
which if Y pops
up a memo edit
window.
P - Phone C 10 Formats the field
to accept a
phone number
delimited like:
(999) 999-9999
S - Social Security Number C 9 Formats the field
to accept a social
security number
delimited like:
999-99-9999
Z - Zip Code C 9 Formats the field
to accept a ZIP
code delimited
like:
99999-9999
See Appendix A-How to operate a generic file maintenance
window for information on how the generated file maintenance
routines function from a user perspective.
Page: 28
ADD WINDOW - PICK LIST
Selecting "Pick List" from the "Add Window" sub menu wll
present the picklist entry window. As in the following
screen sample.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║█Pick List██║══════════════════════════════════════════════════╗
║ █Maint║ Di╔ PICK LIST ════════════════════════════════════╗s ║
╚══════════════║ TB║ Select Alias: ██████████ Index Order: █0 ║═══════════╝
░░░░░░░░░░░░░░░║ Fi║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Re║ Edit Help: N ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Ha║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Co║ Window Height: █0 Width: █0 ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚═══║ Display Expression (evaluated as a macro) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ █████████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ QWERTY Scroll? N (Y/N) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ QWERTY Key Size: █0 ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ Bounded By: ██████████ (fieldname) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════════════════════╝░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter Pick List Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
This window type has only one windowful of information to
enter but each entry is critical to the outcome of the "Pick
List" window so be very careful with each field.
The first two fields require the database alias name and the
index order to use for the picklist, the alias name is
required. The index order can be in the range 0 to 15.
These fields are NOT checked against entries made under the
"Edit Databases USEd" menu option.
Select Alias: - This field is required but entry is not
checked. If you try to bypass this field a list of .DBFs in
the current directory will be presented for selection.
Enter the alias name of the database in which to verify the
GET entry.
Index Order: - This field is also required. Enter the index
order number to use when the "Pick List" is displayed.
Assistance with entry is available if there are index
entries for the alias entered in the previous field. The
text "F10-Index List" will be displayed on the bottom of the
window when a list is available.
Comment - Always enter the BUILDER window comment, even
though a blank is accepted. You will, sooner or later, find
it is easier if this is entered.
Page: 29
Edit Help - The "Edit Help" field during and "Add Window"
should be left alone. If a Y is keyed it will display an
error message. It is left on the screen for consistency
with the "Change Window"/"Edit Elements" menu option.
Window Height / Width - This is the only window where you
have to enter the window dimensions, this is necessary
because, unlike other window types, there is no reliable
method to compute the size. That means you will have to
figure out the size you like and enter the number of rows
the window will occupy and the number of columns in the
first two fields; "Window Height" and "Width".
Display Expression - Entry here can get complex and the
BUILDER entry field will scroll side to side to a maximum of
150 characters. Enter anything that can be evaluated as a
macro and returns a character type string. You can bring in
fields of related databases also. Some examples:
(1) assume: primary database INVOICE related to CNAM
DTOC( FDate ) + " " + Cust_Nbr + " " + CNam->Cust_Name
This example does a number of things you will want to know
about Pick List function operation. The first field is the
date field FDATE converted to a string in the INVOICE
database, followed by CUST_NBR of the same database. The
last field is a field in another database, presumably
related to, INVOICE by the CUST_NBR field and displays the
field CUST_NAME from the database CNAM This way everything
is converted to character for display. All three of these
fields are separated by a single space to make the display
more readable. BUILDER generated source code does not set
the database relations, this is left to the programmer. The
philosophy being that database relations should only be set
when absolutely necessary for performance reasons.
(2) assume: primary database EMPLYEES key EMPL_NBR
Empl_Nbr + " " + TRIM( FName ) + " " + LName
This is a simpler and more common example. Three fields
from a single database are displayed each separated by a
single space character. The first and last fields are
displayed as is from the database. The FNAME field is
TRIM()ed, however, thus shortening the length of the
displayed text, not to worry, as the Pick List function will
widen/shorten any display to fit into the Width you
specified for the window.
QWERTY Scroll? (Y/N) - is asking if you want to allow
scrolling through the Pick List using the alphanumeric
Page: 30
(QWERTY) keyboard as well as the cursor controls. If you
enter "Y" your Pick List will have a field on the top border
delimited by square brackets ([]) into which the user will
be able to enter any text they like, anything entered from
the QWERTY portion of the keyboard will cause the pick list
to be repositioned using the QWERTY data between the
brackets as the key expression. For example if you have a
pick list window displayed and the key field is a last name
and you enter a "J" character the first record in your
database with a last name beginning with the letter "J" will
be displayed followed by other names in alphabetical order.
Next you type the letter "O", this will display the names
starting with "JO" as their last name and so on until you
find what you're looking for. This option is very useful
when scrolling through large databases. The backspace key
will remove the last character entered into the QWERTY area
and reposition the database accordingly. If the index order
is passed as 0 (zero), the QWERTY option will be automati
cally turned off.
WARNING: Using the QWERTY scroll options Absolutely
Requires the index expression to return a character value!!
QWERTY Key Size - is an optional field used to override the
default length which is determined as the length of the
index key. Sometimes the index key is very long and you
will want to restrict the area available for entry, enter a
number that is smaller than the size of the index key if you
use this otherwise leave it as zero to use the default size.
If you enter a value larger than the key or larger than the
window width, the results will be unpredictable.
Bounded by - will only be allowed if the "QWERTY Scroll?
(Y/N)" field is set to "N". Enter the name of a field -
most likely part of the controlling index - and in the
generated source code you will have to position the database
where you like before the PLIST() function is called. The
Pick List function will only scroll records where the
entered fieldname is equal to the value when the function
was initiated. These records must be contiguous in the
database, as soon as the entered fieldname changes,
scrolling will not be allowed. This option restricts any
scrolling to a subset of your database.
Note that if you need to use the QWERTY Scroll feature AND
Bounded By, this can be accomplished by editing the program
source code manually. See the Function Reference Guide,
PLIST() function for more information.
"Bounded by" example:
You have a database that contains information on your
Page: 31
factories. You have three factories, called Plant-A, Plant-
B and Plant-C. You want to scroll through the Plant-B data
records but not encounter any Plant-A or Plant-C records.
You have an index on the PLANT_ID field (contains "A","B",
or "C" to identify the factory). Enter 'PLANT_ID' in the
Bounded by Pick List field. Then after you have generated
the source code, add the command
'DBSEEK("B")' just before executing the PLIST() function.
This will position the database to the first Plant-B record
and scroll ONLY those PLANT_ID records. Therefore no Plant-
A or C records will be seen. Be aware that it is the
programmers responsibility to position the record pointer
prior to the call to PLIST()!
Page: 32
ADD WINDOW - COPY WINDOW
To make an EXACT duplicate of an existing BUILDER window,
select the "Copy Wndw" option of the "Add Window" sub-menu.
A picklist will be displayed showing all the windows
available to be copied (Everything except the root menu).
The picklist displays the procedure name (sort order) and
the window comment on each line of the list. Use the
Up/Down arrows, Page Up/Page Down keys to move the highlight
bar to the window you would like to duplicate. Press ENTER
to select the highlighted window for copying.
The Add Window pick list will look something like this:
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ TBrowse ║══════════════════════════════════════════════════╝
░░░░░░░░░░░░░░░║ File Maint ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Rel╔═══════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Han║█DLOG023█cust/vend aging dlog██████████║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║█Cop║ DLOG025 Order Entry Detail ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚════║ DLOG027 entry of items ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG029 Add Ship 2 in Order ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG030 Order Number and Ord ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG038 Look at order detail ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG040 ship label qty ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down, PgUp/PgDn to Move Pointer ▓ ENTER to Select ▓ ESC to Exit ▓
A prompt will then be presented that asks you to confirm
that you would like to copy the selected window. See the
following screen sample shows this. Page: 33
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ TBrowse ║══════════════════════════════════════════════════╝
░░░░░░░░░░░░░░░║ File Maint ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Rel╔═══════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Han║█DLOG023█cust/vend aging dlog██████████║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║█Cop║ DLOG025 Order Entry Detail ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚════║ DLOG027 entry of items ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG029 Add Ship 2 in Order ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG030 Order Number and Ord ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG038 Look ╔═══════════════════════════════╗░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░║ DLOG040 ship ║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░╚══════════════║ Create Copy of this Window? ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Press Y-Yes or N-No ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════╝░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down, PgUp/PgDn to Move Pointer ▓ ENTER to Select ▓ ESC to Exit ▓
Answering Y to the above dialog will create a duplicate of
the window selected.
Page: 34
ADD WINDOW - HAND CODE
Selecting the "Hand Code" Option from this menu will present
a window for entry of the window comment. Once entered, a
text editor is placed on the screen for entry of your own
source code statements.
The editor is simply a call to the Clipper MEMOEDIT()
Function. All the editing functions available in MEMOEDIT()
will be available in the "Hand Code" entry window.
When editing "Hand Code", Pressing the Ctrl+PgDn key
combination will present the prompt "O.K. to Delete? (Y/N)".
Answering Y-Yes will permanently delete the current "Hand
Code" and remove the hand code psuedo-window from your
application prototype. Answering N-No will resume editing
the "Hand Code".
The hot-key Alt+P will be enabled, this will enter the
source code statements to take and react to a yes/no prompt.
This will only be worth using when immediately following a
dialog box.
You can enter the text "@NXTWNDW" (no quotes, in upper case
only). When the source code is created all occurances of
"@NXTWNDW" will be replaced with the name of the function or
procedure for the window which follows the hand code
section. This allows you to conditionally control access to
the window that follows a hand coded section. Also entering
parameters to the next window, like "@NXTWNDW( cParm1,
dParm2 )" will create these parameters in the procedure
declaraction in the following window.
If no "@NXTWNDW" is entered in a particular hand coded
section, two additional lines of code will be added when the
source code is generated. They consist of a call to the
following window (if there is one), and a RETURN command.
If an "@NXTWNDW" is entered but there is no window following
the hand coded section, a comment is entered explaining this
error condition exists.
You can use the "@NXTWNDW" command to pass parameter out of
a hand code section, you can also use another command,
"@FUNC" or "@FUNCTION" to pass parameters into a hand code
section. If used, the "@FUNC" command must be the first
non-comment line of a hand code section it must also decare
the hand code section as a FUNCTION or PROCEDURE. For
example entering the following
FUNCTION @FUNC( cParm1, dParm2 )
Page: 35
would declare the hand code section as a function (default
is PROCEDURE), thus requiring a value to be returned. Also,
since parameters are placed in the declaraction, the call to
the hand code section from the previous window will pass
"cParm1" and "dParm2" as parameters. Using hand code
sections to pass parameters facilitates the use of LOCAL
instead of PRIVATE variables.
Page: 36
ADD WINDOW - TBROWSE
Selecting "TBrowse" from the "Add Window" menu will first
present the TBrowse initialization screen. See the
following screen sampe for an example of this screen.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ╔════════════════════════════════════════════╗ ║
╔══════════════║ Comment: ██████████████████████████████ ║══════════════════╗
║ █Maint║ Edit Help: N ║ Reports ║
╚══════════════║ ║══════════════════╝
░░░░░░░░░░░░░░░║ Database: ████████ Index Order: █0 ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Bounded by: ██████████ ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Rec # Column when Initialized? N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Toggle of Rec # Column N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Append of New Records? N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Search by Index? N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Index Order Changes? N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Column Width Changing? Y ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Column Freezing/UnFreezing? N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Column Delete/Restore? Y ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Full Width Highlight Bar? N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Records to be Deleted? N ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚════════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Answer TBrowse Questions ▓ PgDn-Edit Columns ▓ ESC-Exit ▓
Answering questions on this screen will allow you modify
features of Builder TBrowses. Builder TBrowses can be set
up to view whole databases, portions of databases, or as
child relations of other TBrowses. You can easily activate
several TBrowses at the same time with a small amount of
hand coding. There are also a few TBrowse modifications
that can only be made by hand in the generated source. See
the Library Reference on the DictPut() function for more
information on this.
TBrowse initialization screen field descriptions:
Comment - The comment entered here will be placed in the
generated source code in a Proc Map at the beginning of the
file and in a small comment section preceeding the procedure
where where the source for this specific window is located.
Although entry is not required you should ALWAYS enter these
comments.
Edit Help - Each TBrowse has a maximum of two help
screens, the generic help screen created by Builder and the
one you can edit here. This help screen should include
information about why the TBrowse is in the system. The
keystroke and other navigation information is included in
the Builder created generic help screen. Note that you
cannot edit a help screen except when this item has been
access from the "Change Window"/"Edit Elements" menu
Page: 37
selections.
Database - Builder TBrowses will only browse databases.
Entry into this field is required. If you attempt to bypass
this field, a picklist of .DBF databases in the current
directory is presented. Be sure that the database alias
name you enter here will be opened in your program. See the
"Files" menu "Edit Databases USEd" for more information on
the application database list.
Index Order - Enter a number between 0 and 15 here to
indicate the index order number for the database in the
preceeding field. If the database was located in the
Builder database list and there are indexes listed for that
database the bottom border of the window will display "F10 -
Index List" when your cursor is positioned in this field.
Press the F10 key when this is displayed to pick an index
order from the presented list.
Bounded by - Entry in this field is optional. If entered
the records accessible will be restricted to the subset
where the field name entered here is exactly equal to the
value it had when the browse was activated. A browse is
considered active when the browse pointer is displayed.
Rec # Column when initialized? - You may add a special
column to the TBrowse that contains the database record
number. Answer Y here to place this column in the browse
when the browse is first displayed. Enter N and it will be
left off.
Allow Toggle of Rec # Column - The Alt+N key combination
can be activated to alternately remove and add a record
number column to the active browse. Enter Y here to allow
this, N to disallow.
Allow Append of New Records? - Cursoring past the last
record in a browse can, by entering Y here, allow new
records to be added to the database. Enter N and records
new records cannot be added.
Allow Search by Index? - The Alt+S key combination can
be activated to allow database index searches. When
selected from a browse, a prompt will be displayed with the
current index key value which can be modified. Change the
field value to move to that area of the database nearest to
what was keyed. Enter Y here to allow this, or N to
disallow.
Allow Index Order Changes? - The Alt+O key combination can
be activated to allow the index order of the active browse
to be changed. When pressed the user will be presented a
Page: 38
list a available index orders to select from. Enter Y here
to allow this or N to disallow. Note that through hand
coding in the TBrowse source you can exclude index orders
from the list. See the DictPut() function in the Library
Reference about the ORDEXCPT element.
Allow Column Width Changing? - The Alt+W key combination
can be activated to allow the width of TBrowse columns to be
changed. When selected from a browse the column in question
will be highlighted and a prompt containing the current
width will be presented. Changing the number in the prompt
will modifiy the column width. Enter Y here to allow this
or N to disallow.
Allow Column Freezing/UnFreezing? - The Alt+F and Alt+U
key combinations can be activated to allow columns to be
frozen at the left of the browse window. When selected fro
ma browse the column for freezing will be highlighted and
prompt will ask if that is the column to be frozen.
Answering Yes will then freeze the column. Unfreezing
happens immediately. Columns are unfrozen in the reverse
order they were frozen. Enter Y here to allow this or N to
disallow.
Allow Column Delete/Restore? - The Alt+E and Alt+R key
combinations can be activated to allow columns to be deleted
and restored from a browse. Deleted columns are placed in a
list and the list is displayed to restore them. Before a
colum is deleted it is highlighted and a prompt is displayed
that asks if the column should be delected, answering Yes
will move the column to the Restore list. Enter Y to allow
this or N to disallow.
Full Width Highlight Bar? - A browse can be created with a
highlight bar that is the full width of the window. Enter a
Y here to allow this or N to disallow. Note that using this
and an alternate column color or a conditional color in a
column will cause the column colors to work incorrectly.
This option should be set off when alternate colors are to
be used in browse columns.
Allow Records to be Deleted? - The Alt+D key combination
can be activated to allow browse records to be deleted.
Note that in order to get use of the Alt+D key combination
Builder places the Clipper ALTD( 0 ) function in the
beginning of the generated source. If you need access to
the Clipper debugger, you will need to comment this out
first !!
Note that if you selected a Bounded by and you will be
allowing records to be added, you will be presented with a
list of fields after this screen. The list will contain the
Page: 39
fields in the database to be browsed. Tag all fields that
preceed the Bounded by field in the index key and the
Bounded by field. This will create items that will
initialize key fields when new records are added.
Note also that if you selected your browse with a Bounded by
field AND you want to allow index searches you must enter an
item into the browse procedure by hand. Be sure to enter
the BNDPFX DictPut() element or your index searches will not
work. See the DictPut() function in the Library Reference
for more information.
Warning: You will want to be careful to select browse
options that are not mutually exclusive. For example
allowing index order changes on a Bounded by browse will,
obviously, not work.
Once the TBrowse initialization screen has been completed,
the column entry screen is presented. Enter as many columns
as you like for your browse, but be aware that the more that
are active the slower the performance. It is, like other
Builder windows, much easier to add columns by using the
"Import" menu item from the "Additional Items" menu.
This is an example of the TBrowse column entry screen:
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ╔════════════════════════════════════════════╗ ║
╔══════════════║ Comment: ██████████████████████████████ ║══════════════════╗
║ █Maint║ Edit He╔═ TBROWSE ════════╡Record: 1 of 0╞════╗orts ║
╚══════════════║ ║ Column Heading: ║══════════════╝
░░░░░░░░░░░░░░░║ Databa║ ████████████████████████████████████ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Bounded ║ Picture: ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ ████████████████████████████████████ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Rec # Co║ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow To║ Editable: █ (Y/N) ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Ap║ Default Color: █ (1, 2, or <space>) ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Se║ Initial Width: ██0 ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow In║ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Co║ Highlight Condition: (operate on x) ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Co║ ████████████████████████████████████ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Co║ Highlight Color: █ (1, 2, or <space>)║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Full Wid║ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Allow Re║ Field Name: ██████████ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ Field Type: █ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚═════════║ Field Length: █0 Decimal █0 ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░╚═╡F10-Addtional Items╞════════════════╝░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
Enter TBrowse columns like other Builder elements, fill in
the screen and press PgDn to save. Press PgUp/PgDn to see
the previous/next column data. Enter TBrowse columns as
follows:
Column Heading - Enter the text of the column heading
here, use a semicolon (;) in the heading as a 'carriage
Page: 40
return' to create multi-row headings. A column heading is
required for each column.
Picture - Enter either a valid Clipper picture string in
this field or one of two special pictures that are
interpreted by Builder when the code is generated. The
special pictures are @MEMO and @EXEC:<function>.
If the column is a memo data type enter @MEMO in the picture
field. Whenever any alphabetic or numeric key or ENTER is
pressed when the browse pointer is in this column a window
will be displayed with the memo contents inside. If the
column is set as editable, the cursor will be turned on and
the memo will be editable otherwise the memo is display
only.
If @EXEC:<function> is entered in the picture field, the
column data will not be displayed from a database but will
be the literal text of whatever is in the Field Name field
on this screen. Whenever any alphabetic or numeric key or
ENTER is pressed when the browse pointer is in this column
<function> will be executed. Be sure to put paranthesis and
any parameters you wish to include in the function call.
For example to display a message using the Builder MsgBox()
function you would enter the following:
@EXEC:MsgBox( {"Just a Little Message", ;
"to Show How the", ;
"@EXEC for TBrowses Works" })
Though when keying this into Builder you would place it all
on one line and wouldn't use the semicolon.
Editable - Enter Y here to allow the database field in
this column to be modified. Whenever any alphabetic or
numeric key or the ENTER key is pressed the cursor is
positioned in the pointer area of the current column and the
field can be edited. If the Editable option is turned off
then alphabetic and numeric key or ENTER sounds a tone.
Default Color - Leave this field blank and the column
will be displayed in the same color as the main browse
window. Enter a 1 (one) to display the column in the
Builder highlight 1 color or two to display it in highlight
2. See the Colors section in this manual for information on
seeing and changing the TBrowse colors.
Initial Width - Leave this field as zero and the column
will be sized automatically by the Clipper TBrowse mechanism
or enter the non-default width to set this column to another
width.
Page: 41
Highlight Condition (operate on x) - Leave this field
blank and all the records in the column willl be displayed
in the column color. By entering a value here you can
change the color of selected records of a TBrowse column.
The variable x will be passed into a codeblock and will
contain the database field data of this column. Whatever
you enter here will be the code placed in that codeblock.
Your code MUST return a logical data type. If .T. is
returned the record is displayed in a different color that
the rest of the column. For example you want to display a
column that contains a date data type in a different color
when the column field contains a value that is 30 days older
than todays date, enter this:
DATE() - x > 29
Whenever the DATE() minus the field data in a record (x) is
greater than 29 then that field in the column will be
displayed in a different color. See the next field on this
screen for choosing which color.
Highlight Color - Enter a 1, 2, or blank here to choose
the color to display when a highlight condition is used.
Enter a 1 or 2 to select highlight 1 or highlight 2 or leave
this blank to select the browse main color. Note that this
is only used in conjuction with the preceeding field and
that a color change will not be noticable if the color
selected here is the same as the Default Color field on this
screen.
Field Name - Must be a valid field name in the database
selected in the TBrowse initialization screen unless the
@EXEC picture value is used, in that case the field cannot
be blank.
Field Type - database field data type.
Field Length - database field length.
Field Decimal - database field decimal positions for
numerics.
Note that you can use a little trick to to place rarely used
columns in the Restore column list before the browse is
activated with some simple hand coding. See the DelColPut()
function in the Library Reference for information on this.
If you want to set up more than one TBrowse and have them
all visible at the same time, see the documentation in the
Library Reference on the BrowseDb() function. Also see the
Builder Library Reference on the DictPut() and DictGet()
functions for documentation on how to use your own key
handler, remove index orders from the index list, and add a
SEEK prefix for bounded by TBrowses.
Page: 42
ADD WINDOW - REL MAINT
Selecting the "Rel Maint" option from the "Add Window" menu
will present the Rel Maint initialization screen. This
looks like the following screen samaple:
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ TBrowse ║══════════════════════════════════════════════════╝
░░░░░░░░░░░░╔═════════════════════════════════════════════════════════════════╗░
░░░░░░░░░░░░║ Select File: ████████ Index Order: █0 Menu Opts: ACD ║░
░░░░░░░░░░░░║ Bounded by: ██████████ Parent File: ████████ Field: ██████████ ║░
░░░░░░░░░░░░║ Comment: ██████████████████████████████ ║░
░░░░░░░░░░░░║ ║░
░░░░░░░░░░░░╚═════════════════════════════════════════════════════════════════╝░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter Procedure Comment ▓ ESC-Exit ▓
Use Builder Rel Maint's to set up basic file maintenance for
child database relations. You needn't have actual
DBRELATION()'s set up, as this would cause a great
performance loss, simply enter these fields carefully.
Note that you may want to preceed Rel Maint windows with a
small Hand Code Section that will position the database to
the correct record.
Initialize a Rel Maint as follows:
Select File - Enter the database alias name of the database
you wish to be maintained in this Rel Maint window. It is
best to enter an alias that has already been entered into
the Builder database list. This field is required and if
bypassed a list of .DBF databases in the current directory
will be presented. See "Files"/"Edit Databases USEd" in this
document for more information on this.
Index Order - Enter a number between 0 and 15 here to
indicate the index order number to use to maintain
relational integrity. If the alias name entered in the
previous field is found in the Builder database list the
bottom border of this window will display "F10 - Index List"
when the cursor is positioned here. If allowed, press F10
to select an index order from this list.
Page: 43
Menu Opts - Normally a Rel Maint has three menu options,
these are "Add", "Change", and "Delete". These are
represented by the letters "A", "C", and "D" in this field.
Removing any of these letters will cause it's menu option to
be removed from the maintenance window in the application.
If this field is blank or none of the letters "A", "C", or
"D" is present the Rel Maint will be constructed without any
menu options and be a view only window.
Bounded by - Enter the field name that is in the Select
File database whose value must remain exactly the same as
when the Rel Maint is started. If the Bounded by field
value changes that marks either the top or the bottom of the
Rel Maint records. Entry here is required.
Parent File - Enter the database alias name of the parent
database for the Rel Maint here. This should also be
entered into the Builder database list. Entry into this
field is required if bypassed a list of .DBF files in the
current directory is presented.
Field - Enter the name of the field in the parent database
that must exactly equal the field in the child database to
maintain the relationship. Although there may be several
fields included in a relation condition there will always be
one field that is the lowest level sort order and will still
maintain the relationship.
Comment - The comment entered here will be placed in the
generated source code in a Proc Map at the beginning of the
file and in a small comment section preceeding the procedure
where where the source for this specific window is located.
Although entry is not required you should ALWAYS enter these
comments.
Once the Rel Maint initialization screen is properly filled
out the elements screen is presented. On this screen you
enter the display and keyboard entry items each screenful of
information about these is call an element.
The elements screen will look like the following: Page: 44
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║ Dialog ║ Process Reports ║
╚══════════════║ TBrowse ║══════════════════════════════════════════════════╝
░░░░░░░░░░░░╔═════════════════════════════════════════════════════════════════╗░
░░░░░░░░░░░░║ Select File: TEST████ Index Order: █1 Menu Opts: ACD ║░
░░░░░░░░░░░░║ Bo╔═ REL MAINT ══════════╡Record: 1 of 0╞════╗ield: TEST██████ ║░
░░░░░░░░░░░░║ ║ Display Text: ║ ║░
░░░░░░░░░░░░║ ║ ████████████████████████████████████████ ║ ║░
░░░░░░░░░░░░╚════║ Enhanced Color?: N (Y/N) ║═════════════════╝░
░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░║ GET var: ██████████ Length: ██0 ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░║ Picture: ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░╚═╡F10-Addtional Items╞════════════════════╝░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
It is easiest to initially add all the Rel Maint elements by
using the "Import" option on the "Additional Items" menu.
See the section in this document entitled "Addition Items
Menu" for more information on how to do this.
You will want to be careful not to put any key fields on
your Rel Maint screen. Allowing entry into a key field
would cause the database pointer to possibly be moved
outside the boundries you intend.
Enter the fields on the element screen as follows. Press
the PgDn key to save and element. Press PgUp and PgDn to
move to the previous and next elements.
Display Text - The text entered here will become text
displayed in the Rel Maint window. If the GET var field on
this screen is left blank then entry here is required.
Enhanced Color? - Enter a Y here to have the Display Text
shown in the "Window Message" screen color. Enter N for
"Window Normal" as the color. You can view/change these
colors from the "Main Colors" Builder screen. See the
Colors section in this document for more information on
application colors.
GET var - Enter the name of the database field for a screen
GET to be placed in the Rel Maint window here. Normally you
will not need to enter this value because the "Import" menu
option should place the correct data here for you.
Length - Enter the length of the GET var variable
here. Normally you will not need to enter this value
because the "Import" menu option should place the correct
Page: 45
data here for you.
Picture - If you want a PICTURE clause added to your GET,
enter a valid Clipper PICTURE (either with or without
quotes) in the "Picture" field.
Enter "@MEMO" here if the "GET var" is a memo data type (no
quotes all caps).
Enter '@MENU:{"prompt1","prompt2",...,"promptn"}' to create
a 'Menu' GET (leaving out the two single quotes). All menu
GETs will be positioned across the screen (horizontal), the
length will be computed and the field presented on the
BUILDER screen with the correct size. The "GET var" for a
'Menu' GET must be a character or numeric data type ONLY.
The menu code will read the data type and return the menu
selection based on the data type.
Enter '@DROPDOWN:{"Entry1","Entry2",...,"Entryn"}' here to
create a dropdown list box GET (leaving out the two single
quotes). The length of the display will be determined as
the length of the longest array element. The GET variable
MUST be a numeric data type! The value placed in the "Get
var:" will be the array element number selected. When the
drop down listbox has GET focus the up/down arrow keys will
not move to the previous/next get but instead will move
through the array selections. Use the TAB/Shift+TAB to move
between fields. Also the Alt+DownArrow key or clicking on
the arrow button will display the drop down listbox.
Note: @MENU is NOT available to Summer '87 Users!!
Page: 46
OPTIONS
Select "Options" from the BUILDER main menu to modify the
information you entered at system startup.
See the section in this document titled "GETTING STARTED"
for a detailed list of all the "Options" and their allowable
values.
Page: 47
FILES
Selecting "Files" from the BUILDER main menu will present
the "Files" submenu which contains four selections that deal
with files for the application you are building. It looks
like the following screen example.
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║█Edit Databases USEd█████║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Maintena║ Data Dictionary ║ Reports ║
╚═════════════════║ Generate Source Code ║══════════════════════════════════╝
░░░░░░░░░░░░░░░░░░╚═════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit ▓
The Files menu has four options:
Edit Databases USEd - Provides BUILDER with a list of
databases and indexes your application will require.
Modify/Create Structure - Create or change .DBF databases
structures.
Data Dictionary - Edit, Update, or Report the Builder Data
Dictionary.
Generate Source Code - Creates a BUILDER source file (.PR1),
a header file (.ch) for the application and, if none already
exists, a make (.rmk) file for the application.
Page: 48
FILES - EDIT DATABASES USED
Selecting the "Edit Databases USEd" option of the "Files"
submenu will present the database/index list window which
will allow you to create and maintain a list of all the
databases and indexes your system will require. As in the
following screen sample.
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║█Edit Databases USEd█████║plication ║
╔═════════════════║ Mo╔═ DATABASES ════════════════════╡Record: 1 of 0╞════╗═══╗
║ █Maintena║ Da║ Database: ████████ MemVar Prefix: █ ║ ║
╚═════════════════║ Ge║ Alias: ████████ RDD Name: ████████ ║═══╝
░░░░░░░░░░░░░░░░░░╚═══║ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ Indexes Key Expression ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ████████ ████████████████████████████████████████ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░╚════════════════════════════════════════════════════╝░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
Database - Enter the filename of a database your system will
need opened in the this field.
MemVar Prefix - Optionally enter the "Memory variable
prefix" character. You may enter any alphabetic character,
the letter "Q" is the default. When the database is opened,
a memory variable will be created for every field in the
database. The memory variable will be identical to the
field variable except it will be prefixed by the character
you enter in this field. See the DBPUBL and DBSTOR function
documentation in the BUILDER Library Reference for more
information. Only consider entering this field if you are
producing Summer '87 style code. For Clipper 5.x users be
sure to leave this blank, BUILDER will enter is automati
cally when the source is generated - see the header (.ch)
file for your application for the prefixes automatically
selected by BUILDER.
WARNING for Summper '87 users::The "Memory variable prefix"
can DESTROY your data if used improperly! For example you
have two database fields: ZREAL_DATA1 and ZREAL_DATA2. The
field names are both at the Clipper maximum of 10
characters. When converted to memory variables using the
"Memory variable prefix" character, they will become
(assuming a prefix character of "Q") QZREAL_DATA and
Page: 49
QZREAL_DATA! Identical and the second field's data will be
lost. The moral to the story is NEVER EXCEED 9 CHARACTER
FIELD NAMES!
Alias - If the database name in the "database" field is not
the alias you want to use in your program, enter the
alternate alias in this field. Note that some valid
filename characters cannot be used in the alias - I have not
seen this anomaly documented in any Clipper manuals or
books. (watch out for hyphens)
RDD Name - Enter the name of any available RDD in this field
and the database plus the associated indexes will be opened
using that RDD. The first three characters of the RDD name
will be assumed to be the database filename extension. Note
that BUILDER uses a 'fake' RDD called "DBFIDX" for access to
FoxPro ".IDX" files, using "DBFCDX" allows access to FoxPro
".CDX" databases. This is neccesary because both ".IDX" and
".CDX" indexes are supported with the Clipper "DBFCDX" RDD.
Indexes / Key Expression - There is room to open twelve (12)
indexes for any database, if you need more continue on the
next record and adjust the source code, enter the index name
under the heading "Indexes" and the key expression
associated with it under the "Key Expression" heading.
Page: 50
FILES - MODIFY/CREATE STRUCTURE
To modify the structure of an existing "DBFNTX" .DBF
database or create a .DBF database select the "Modify/Create
Structure" option of the "Files" submenu. You should see a
screen similar to the following sample.
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║█Modify/Create Structure█║══════════════════════════════════╗
║ █Maintena║ Da╔═════════════════════════════════╗ Reports ║
╚═════════════════║ Ge║ Database: █████████████████████ ║══════════════════════╝
░░░░░░░░░░░░░░░░░░╚═══║ ║░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░╚═════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter Database Name ▓ ESC-Exit ▓
Selecting this option will present a dialog which will
require you to enter the name of a database whose structure
you want to modify/create. If you press ENTER with the
"Database" entry field blank and there are .DBF files in the
default DOS directory, a pick list will be presented for you
to select from these files. If you press the F10 key while
the picklist is displayed, you will be able to print ALL the
structures listed in the picklist window at once . You must
select something from the picklist or enter something into
this dialog to get to the structure modification/creation
window.
The structure modification window contains four columns into
which you enter your database structure. See the following
sample screen .
Page: 51
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║█Modify/Create Structure█║══════════════════════════════════╗
║ █Maintena║ Da╔═════════════════════════════════╗ Reports ║
╚═════════════════║ Ge║ Database: TEST████████████████ ║══════════════════════╝
░░░░░░░░░░░░░░░░░░╚═══║ ╔══════════════════════════════════════╗░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░╚════║ Structure: TEST.DBF ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ╔═Name═══════Type══════Len═Dec═╗ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ██████████ █████████ ██0 ██0 ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║ ║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ╚══════════════════════════════╝ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░╚═╡F10-Print Structure╞════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down-Prev/Next Field ▓ 1st Char is A-Z, Rest Are 0-9, A-Z or _ ▓ ESC-Exit ▓
Enter the field name in the first column, the first
character must be "A" through "Z", the rest of the field
name may contain any alphabetic or numeric characters plus
the underscore. A field name can be from one to ten
characters in length.
The second column, "Type", refers to the field data type.
There are five possible field data types, you only need to
enter the first character of the field type you want. The
five field data types are as follows:
C - Character. Alphanumeric text type data.
N - Numeric. Containing a value that can be operated on
using mathematical calculations.
D - Date. Will only be allowed to have a valid date. Can
use mathematical calculations to get a resultant date also.
M - Memo. System will generate a .DBT file to store "word
processing" like text.
L - Logical. Can be set to true (.t.) or false (.f.) only.
The third column is the length for the field of the name and
type already entered. If you entered Date, Memo, or Logical
as the field type; the length will be automatically entered
for you. The maximum length for a Character field is 255
bytes, for Numeric 20. Date, Memo, and Logical field
lengths are static fixed sizes and entered by BUILDER
automatically.
The fourth column is only used if the field type is set to
Numeric and the allowable size varies. The allowable values
(as with the other three columns) will be displayed on the
bottom line of the screen.
Page: 52
Use the up/down arrows and page up/page down keys to move
between previously defined fields. Press the F10 key and
the database structure will be printed at the printer port
assigned in the "Printer Port" field of the "Options"
window.
Press Ctrl+N to insert a field and Ctrl+Y to delete a field.
These are the only key combinations not displayed on the
screen so you will need to remember them. They are the same
as in dBASE III+ so it shouldn't be difficult.
Press the ESC key to exit.
If you have made any changes a dialog window will be
presented asking if you would like to make the structure
changes permanent. Answer Yes or No to the question. If
you answer YES the old structure will be saved to a .BAK
file, the new structure will be appended with the old
structures data records if there were any. If you answer
No, nothing will be changed.
Page: 53
FILES - DATA DICTIONARY
The Builder dictionary menu consists of four menu items and
looks like the following screen:
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Maintenan║█Data Dictionary█████████║ Setup ║
╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
░░░░░░░░░░░░░░░░░░╚════════║█Edit Data Dictionary███████████║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from Another Dictionary ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from "Databases USEd" ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Data Dictionary Reports ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░╚════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select▓ ESC-Exit ▓
The Builder Data Dictionary allows you to create a list of
all the database and memory variable elements you will be
using for your application. For each database field or
memory variable in your system you can maintain several
defaults. The defaults entered into the Data Dictionary are
copied to Builder windows when an "Import from Data
Dictionary" is performed. This is especially useful for
larger systems where many programs will be created using the
same set of databases. Or when database fields are going to
be used in many windows of a system. This removes the need
to re-enter the display text, picture, valid information,
and help text every time a database field or memory variable
is used.
Data Dictionary elements can easily be shared between
Builder applications, eliminating the need to re-enter
information in a new application by utilizing the data
dictionary items from previous Builder systems.
Two simple reports are included to help in documenting your
applications.
If you are creating a "quick and dirty" system with Builder,
it is advisable to NOT use the Data Dictionary. In this
type of system, using the Data Dictionary can actually cause
an increase in the amount of time needed to create a working
system.
Page: 54
Use each of the menu options for the following purposes:
Edit Data Dictionary - Use this to change or delete a
dictionary item. You can add memory variable items, but not
database items (Use 'Update from "Databases USEd"' to add
database fields). You can also delete an entire database
from the dictionary using this menu option.
Update from Another Dictionary - Use this option to add
items to the current dictionary from another Builder Data
Dictionary.
Update from "Databases USEd - Use this option to initialize
or update your data dictionary from the fields of the
databases that have been entered into the "Databases USEd"
list for your Builder application.
Data Dictionary Reports - You can print the data dictionary
reports using this menu option.
Select the data dictionary menu option to accomplish what
you require, or press ESC to exit this menu.
Page: 55
FILES - DATA DICTIONARY - Edit Data Dictionary
When selected, you will be presented with a list of
databases (plus "*MEMVAR*") whose fields are available to be
edited. Similar to the following should appear.
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Maintenan║█Data█Dictionary█████████║ Setup ║
╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
░░░░░░░░░░░░░░░░░░╚════════║█Edit█Data█Dictionary███████████║░░░░░░░░░░░░░░░░░░░
░░╔══════════════════════════════════════════════════╗onary ║░░░░░░░░░░░░░░░░░░░
░░║█*MEMVAR*█System█Memory█Variables█████████████████║Ed" ║░░░░░░░░░░░░░░░░░░░
░░║ GEVAL ║ ║░░░░░░░░░░░░░░░░░░░
░░║ PASSWORD ║══════╝░░░░░░░░░░░░░░░░░░░
░░║ SEVAL ║░░░░░░░░░░░░░░░░░░░░░░░░░░
░░║ USERLIST ║░░░░░░░░░░░░░░░░░░░░░░░░░░
░░║ ║░░░░░░░░░░░░░░░░░░░░░░░░░░
░░║ ║░░░░░░░░░░░░░░░░░░░░░░░░░░
░░╚══════════════════════════════════════════════════░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down, PgUp/PgDn to Move Pointer ▓ ENTER to Select ▓ ESC to Exit ▓
You can only edit the fields for one database at a time.
Select "*MEMVAR*" to edit the memory variables for your
application, these are treated very much like a separate
database in the Builder data dictionary.
Note that you cannot add fields to a data dictionary
database field list, you can only add to the "*MEMVAR*"
(memory variable) list. In order to make database field
changes in the data dictionary, one of the automatic updates
must be selected.
Before data dictionary items can be edited, you must first
intialize the list using one of the two "Update" data
dictionary menu options.
Once you select a database (or "*MEMVAR*") the main data
dictionary edit window appears and looks like the following
screen sample.
Page: 56
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Mainte╔═ D-DICT FIELDS ══════╡Record: 1 of 0╞════╗ Setup ║
╚══════════════║ Field Name Field Type Length Decimal ║═╗══════════════════╝
░░░░░░░░░░░░░░░║ ██████████ █ ███0 █0 ║ ║░░░░░░░░░░░░░░░░░░░
░░╔════════════║ ║ ║░░░░░░░░░░░░░░░░░░░
░░║ *MEMVAR* Sy║ FIELD DEFAULT VALUES: ║ ║░░░░░░░░░░░░░░░░░░░
░░║ GEVAL ║ Display Text ███████████████████████████ ║ ║░░░░░░░░░░░░░░░░░░░
░░║ PASSWORD ║ Picture ███████████████████████████ ║═╝░░░░░░░░░░░░░░░░░░░
░░║ SEVAL ║ ║░░░░░░░░░░░░░░░░░░░░░
░░║ USERLIST ║ Report Column Heading ║░░░░░░░░░░░░░░░░░░░░░
░░║ ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░║ ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░╚════════════║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Description ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚═╡F10-Additional Items╞═══════════════════╝░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
You will have four defaults available to enter for each data
dictionary item. Four additional fields must be entered for
memory variables in order to describe the variable's name,
data type, and length.
Each of the four defaults that can be entered on this screen
are optional.
Display Text / Picture - These will be used as the default
values when imported into a Builder File Maintenance or
Dialog window.
Report Column Heading - Will be utilized when you use the
field exclusively as a BREPORT column entry. In other
words, you enter ALIAS->FIELD_NAME as the BREPORT column
data, and the column heading will be entered automatically.
Note that this only applies to "COLUMN" type reports when
using BREPORT!
Description - This is used on the data dictionary reports.
This is a useful documentation tool only and is not used in
any other way.
The four fields on the top of this screen window can only be
modified when adding or editing "*MEMVAR*"s. If you need to
make changes to a database field's data type or length, use
the "Update from "Databases USEd"" Data Dictionary menu
option.
The first three of these are required:
Field Name - is a one to ten digit memory variable name,
use Clipper variable naming requirements when entering this
Page: 57
value.
Field Type - can be "C"-Character, "N"-Numeric, "D"-Date,
"M"-Memo, or "L"-Logical only. The same variable types as
available in the Clipper programming language. (no surprise
here)
Length - is the length of the variable, the allowable values
vary for the different data types. Character variables can
be up to 999 characters in length. Numerics can be between
20 and 3. Date, Memo, and Logicals are fixed and entered
for you (8, 10, and 1).
Decimal - can only be used when the data type is Numeric and
determines the number of decimal places for the numeric
memory variable.
Use the Page-Down key to save each screen entered. Use
Page-Up and Page-Down to scroll to the previous and next
records in the data dictionary. Pressing the F10 key will
present a menu of "Additional Items" for further construct
ing your data dictionary items.
Page: 58
FILES - DATA DICTIONARY - Edit Data Dictionary - Additional Items
The "Additional Items" menu has five options and looks like
the following screen sampel.
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Mainte╔═ D-DICT FIELDS ══════╡Record: 1 of 0╞════╗ Setup ║
╚══════════════║ Field Name Field Type Length Decimal ║═╗══════════════════╝
░░░░░░░░░░░░░░░║ ██████████ █ ██0 █0 ║ ║░░░░░░░░░░░░░░░░░░░
░░╔════════════║ ║ ║░░░░░░░░░░░░░░░░░░░
░░║█*MEMVAR*█Sy║ FIELD DEFAULT VALUES: ║ ║░░░░░░░░░░░░░░░░░░░
░░║ GEVAL ║ Display Text ███████████████████████████ ║ ║░░░░░░░░░░░░░░░░░░░
░░║ PASSWORD ║ Picture ███████████████████████████ ║═╝░░░░░░░░░░░░░░░░░░░
░░║ SEVAL ║ ║░░░░░░░░░░░░░░░░░░░░░
░░║ USERLIST ║ Report Column Heading ║░░░░░░░░░░░░░░░░░░░░░
░░║ ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░║ ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░╚════════════║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Description ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║█Valid█Edit-Help File-Desc Copy-In Delete ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down Left/Right-Move Pointer ▓ PgUp/PgDn-Prev/Next ▓ ENTER-Select ▓ ESC-Exi
<Body text
Valid - This allows you to attach a default VALID to the currently displayed field.
Valids attached here will be copied to Builder Dialog and File Maintenance
windows if this field is selected during an import from the data dictionary.
Edit-Help - This option will allow you to attach a default detail help screen to the
currently displayed field. Help screens attached here will be copied to Builder
Dialog and File Maintenance windows if this field is selected during an import
from the data dictionary.
File-Desc - This simply allows you to edit the long description for the database in
which the currently displayed field resides. Entering all the long descriptions
makes documenting and pick list selections easier to understand. Entry is
optional.
Copy-In - You can use this selection to update a single data dictionary item from
a Builder window element.
Delete - This menu option will delete ALL the data dictionary items for the
selected database. There is a confirmation prompt before the deletion is
performed.
IMPORTANT NOTE: The "Valid" and "Edit-Help" menu options in the data
dictionary function exactly the same as their counterparts when editing Builder
screen elements. See the documentation on these items under the table of
contents heading "Dialog/File Maintenance 'Additional Items' Menu" for more
Page: 59
information.
More Details the Remaining Menu Options:
Selecting "Copy-In" will present a picklist of all the dialog and file maintenance
screen GETs. You will be able to scroll the picklist to any field. Pressing
ENTER will select the highlighted field, or press ESC to abort the "Copy-In".
The "Copy-In" option will behave differently when used in the "*MEMVAR*"
fields than fields for your system databases.
If a field is selected to be copied and you are editing the "*MEMVAR*" fields,
the memory variables will be searched and if an exact field name match is found,
the matching field will be updated. If a match is not found, a new memory
variable data dictionary entry will be added. Only blank and non-existent data
will be updated, no overwrites will be done when using "Copy-In".
If you were editing a system database when you select a "Copy-In" field, only
blank or non-existent data dictionary fields on the current item will be updated.
Copy-In will attempt to update the "Display Text" (if blank), "Picture" (if blank),
"Valids" (non-existents will be added), and "Help-Text" (if non-existent).
FILES - DATA DICTIONARY - Update from Another Dictionary
You can initialize or update your data dictionary from another Builder data
dictionary located on another disk or in another subdirectory by using this menu
option.
This type of update is a DESTRUCTIVE update, in other words, it will overwrite
your existing data dictionary fields. Doing this here has an advantage when
several systems share common data. If one system's data dictionary is changed,
each following system can update from the source system. This is also dangerous,
so be careful!
In order to perform the update, you first must enter the drive and subdirectory
name where another Builder data dictionary resides. Enter this into the field in
the window displayed when the "Update from Andother Dictionary" menu option
is selected. This look like the following screen.
Page: 60
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Maintenan║█Data Dictionary█████████║ Setup ║
╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Update█from█Another█Dictionary█║░░░░░░░░░░░░░░░░░░░
╔══════════════════════════════════════════════════════════════════╗░░░░░░░░░░░░
║ Enter the drive and pathname for the source data dictionary and ║░░░░░░░░░░░░
║ database/index list. You will be presented with a list of files ║░░░░░░░░░░░░
║ in that dictionary. Tag all the files whose dictionary data you ║░░░░░░░░░░░░
║ want copied into this system. ║░░░░░░░░░░░░
║ ║░░░░░░░░░░░░
║ Pathname \CLIPPER\BUILDER2██████████████████████████████████████ ║░░░░░░░░░░░░
║ ║░░░░░░░░░░░░
╚══════════════════════════════════════════════════════════════════╝░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter Path of Source Directory ▓ ESC-Exit ▓
Once this is done successfully, you will be presented with a picklist of the
databases and database long descriptions that are in the source dictionary. Press
"T" to tag each database whose fields you would like copied/changed in the data
dictionary for the current system, pressing "T" a second time will un-tag a tagged
selection. Use Up/Down/PgUp/PgDn to move the pointer to the desired
selection. You may also press "A" to tag the whole list, or "U" to un-tag the
whole list. Press ESC when you are ready to start the update. This screen should
look like the following sample.
Page: 61
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Maintenan║█Data█Dictionary█████████║ Setup ║
╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Update█from█Another█Dictionary█║░░░░░░░░░░░░░░░░░░░
╔══════════════════════════════════════════════════════════════════╗░░░░░░░░░░░░
║ Enter the drive and pathname for the source data dictionary and ║░░░░░░░░░░░░
║ database/index list. You will be presented with a list of files ║░░░░░░░░░░░░
║ in that dictionary. Tag all the files whose dictionary data you ║░░░░░░░░░░░░
║ want copied into this system. ║░░░░░░░░░░░░
║ ║░░░░░░░░░░░░
╔═══════════════════════════════════════════════════╗█████████████ ║░░░░░░░░░░░░
║█*MEMVAR*-System█Memory█Variables██████████████████║ ║░░░░░░░░░░░░
║ SHOPMAST-Shop or Store Master File ║══════════════╝░░░░░░░░░░░░
║ LOTMAST -Lot or Package Control File ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ CPNMAST -Master Coupon Inventory File ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ BTCHMAST-Batch Control Master File ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ ORDMAST -Coupon Order Master File ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ RDMMAST -Redeemed Coupons Master File ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ RTRNMAST-Master File of Unsold Booklets Returned ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
╚═══════════════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ PgUp/PgDn-Scroll ▓ T-Tag Toggle ▓ A/U-Tag/Untag All ▓ ESC-Exit ▓
If you have selected update items, you will be given a "Ready to Start"
confirmation prompt. Pressing "Y" will begin the update process. This process
can take a long time, so be patient.
When it is complete, the data dictionary in the current system will contain an
exact copy of the every item for the databases selected.
Again be WARNED, this is a DESTRUCTIVE copy much like a DOS copy. If
you copy the dictionary items from another dictionary on top of the current one,
any customizations you wish to retain WILL BE LOST.
FILES - DATA DICTIONARY - Update from "Databases USEd"
Selecting 'Update from "Databases USEd" from the Data Dictionary menu will
present a screen similar to the following.
Page: 62
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Maintenan║█Data█Dictionary█████████║ Setup ║
╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from Another Dictionary ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Update█from█"Databases USEd"███║░░░░░░░░░░░░░░░░░░░
╔═══════════════════════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░
║ Tag databases in this list to update the data dictionary. ║░░░░░░░░░░░░░░░░░░░
║ Structure differences between tagged databases and the ║░░░░░░░░░░░░░░░░░░░
║ data dictionary will be corrected. ║░░░░░░░░░░░░░░░░░░░
╔══════════╗ ║░░░░░░░░░░░░░░░░░░░
║█SEVAL████║════════════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
║ GEVAL ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ ENVIRON ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ BDCTFLD ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ USERLIST ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ PASSWORD ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
║ ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
╚══════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ PgUp/PgDn-Scroll ▓ T-Tag Toggle ▓ A/U-Tag/Untag All ▓ ESC-Exit ▓
This update option allows you to initialize your dictionary from the fields in the
databases you will be using in your application. This can also be used to update
the dictionary if you have modified any database structures.
Once selected, you will be presented with a list of database names located in the
"Databases USEd" list (See the table of contents heading "File/Index List" for
more information)
Move the pointer through the list using the Up/Down/PgUp/PgDn keys. Select a
database by pressing "T" to tag it, pressing "T" on a tagged name will un-tag it.
Press "A" to tag the whole list, or "U" to un-tag the whole list.
Press ESC when finished tagging and a "Ready to Start" confirmation prompt is
presented. Press "Y" at the confirmation to begin the update.
If a file name selected is not already in the data dictionary, it will be added. Field
names not in the dictionary for a database will be added.
The field name, data type, field length, and decimal length will be changed, if
necessary, to reflect the current database structure.
If a field or fields have been deleted from a database structure, those fields will
be LEFT IN THE DATA DICTIONARY. You will need to delete an un-wanted
field from the data dictionary by hand!
FILES - DATA DICTIONARY - Data Dictionary Reports
Page: 63
Selecting this option from the Data Dictionary menu will present the following
menu.
Change Window Add Window █Files█ Options Colors Mode About Exit
║ ╔═════════════════════════╗are ║
║ ║ Edit Databases USEd ║plication ║
╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
║ █Maintenan║█Data█Dictionary█████████║ Setup ║
╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from Another Dictionary ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from "Databases USEd" ║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Data█Dictionary█Reports████████║░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░╚════════════╔═════════════════════════╗░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Alpha█by█Database/Field█║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Alpha by Field Name ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╚═════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select▓ ESC-Exit ▓
There are two data dictionary reports available:
"Alpha by Database/Field"
"Alpha by Field Name"
Both reports have exactly identical opening pages and columns (except the second
report has an additional "Database" column) . The difference is that the report by
"Database/Field" prints one page per database, with the database fields sorted
alphabetically on the page. The "Alpha by Field Name" report prints a continuous
list of ALL database fields sorted alphabetically.
The opening page contains help in understanding the rightmost report column.
This column contains codes that indicate what information is attached to a data
dictionary field.
The report columns are:
Field Name - The name of the database field as it appears in the database
structure. Or as entered if it is a memory variable.
Field Type-Len.Dec - A one character code indicating the data type of the field;
followed by a dash, the field length, a period (if numeric) and the decimal length.
Page: 64
Data types can be "C"-Character, "N"-Numeric, "D"-Date, "M"-Memo, or "L"-
Logical.
Field Description"- The first 40 characters of the field long description entered
into the data dictionary.
Database - This column is printed on the "by Field Name" report only and
contains the name of the database where the field is located.
Items Attached - A 10 position column that indicates which VALIDs (if any) are
attached to the database field. If a help screen is attached, and if a report column
is entered.
When a data dictionary report menu option is selected, another window is
presented where you may enter the output device or filename to send the report.
FILES - GENERATE SOURCE CODE
To create Clipper source code select the "Generate Source Code" option from the
"Files" submenu.
You will be prompted "Ready to Generate Source? (Y/N)" press Y for yes or
press N for no (ESC for No will also work). If the file to be created already
exists, you will be prompted "File Exists, Overwrite? (Y/N)" - answer yes to
generate source. Answer no to abandon this operation.
Since this product is very easy to use, the source created is less what you would
have written and more what I would have written. If you can deal with modifying
my code you will like and enjoy the speed with which you can create applications
with BUILDER. On the other hand, if you are a more free spirit and just have to
use your own logic and algorithms you may not like the results. That, however you
may view it, is the trade-off of making this a very easy to use product.
COLORS
Since there are so many colors to choose from, you will first be presented with a
menu when the "Colors" Builder main menu option is selected. Choose between
"Main Colors" and "TBrowse Colors". The main colors allow modification to most
Builder application colors and TBrowse colors allow changing all the colors that
pertain to a TBrowse window.
This will present one of the color selection windows. The left side of a color
selection window will be a menu from which you can select each color variable for
modification. Use the up and down arrows and press ENTER to select the color
to change.
Page: 65
After pressing ENTER on a color option a small display window will be presented
under the color menu. See the sample screen on the next page. The display
window will show the current SET COLOR TO scheme and whether you are
currently changing the foreground or background color. Press the up and down
arrow keys to increment and decrement the color. Press the left or right arrow
keys to toggle between changing the foreground and background color. If you
are changing the foreground color press the TAB key to toggle between a high
and low intensity color. The colors you are changing will display in the right side
of the color modification window, which is a small mock up of the application
screen, as the changes are made.
Press ESC to exit the "Colors" menu option. If any changes were made a prompt
will display in the area under the color menu asking if you want to save the
changes. Press Y to save the Changes or N to abort your changes.
If you save color changes, exit to DOS an re-enter the BUILDER program to see
your new color selections incorporated into your prototype. These colors will also
be used in your application program.
Page: 66
MODE
Select the "Mode" main menu option to set the application in
one of two modes, "Development" or "Prototype". The default
mode is "Development", when set and you press ENTER on a
non-"File Maintenance" window in the application prototype
the BUILDER "Add Window " menu will be presented. However,
if you set the mode to "Prototype" pressing ENTER on a non-
"File Maintenance" window will display a window in the
center of the screen which reads "This Option Not
Installed". The "Prototype" mode is useful when showing the
proposed application to a user, in which case you wouldn't
want the BUILDER menu popping up accidentally.
To set the mode, select "Mode" from the main BUILDER menu.
Press the right or left arrow keys to toggle between
"Development" and "Prototype", press ENTER to set the mode
or ESC to abort this operation.
Page: 67
ADDITIONAL ITEMS MENU
While Adding or Editing detail items for a "Dialog Box" or
"File Maintenance" window the bottom border of the BUILDER
edit window has the message "F10 - Additional Items".
Pressing the F10 key will present the Additional Items Menu,
this menu has four selections:
Valid, Append, Edit Help, and Delete.
This menu will appear at the bottom edge of the screen
window from which it is selected and looks like the
following sample screen.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║█Dialog█████║ Process Reports ║
╚══════════════║ TB╔══════════════════════════════════════════════╗════════════╝
░░░░░░░░░░░░░░░║ Fi║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Re║ Mes╔═ DIALOG ═════════════╡Record: 1 of 0╞════╗░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Ha║ ║ Display Text: ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Co╚════║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚════════║ Enhanced Color?: N (Y/N) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ GET var: ██████████ Length: ██0 ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Picture: ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize?: N (Y/N) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize to: ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ █Valid█ Append Edit Help Delete ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down Left/Right-Move Pointer ▓ PgUp/PgDn-Prev/Next ▓ ENTER-Select ▓ ESC-Exi
In addition to using the arrow keys to move the menu pointer
the Page Up and Page Down keys will skip backward and
forward one screen element.
Valid - allows you to attach a VALID to the currently
displayed GET variable. See your Clipper documentation on
the @...GET command for information on the VALID clause.
Append - allows you to import the fields from a .DBF file or
the data dictionary to create file maintenance or dialog
window elements.
Edit Help - make changes to the Help System screen for the
current GET field.
Delete - Delete ALL elements for the current window.
Page: 68
ADDITIONAL ITEMS MENU - VALID
If the "Valid" option is selected from the "Additional
Items" menu another menu is presented containing all the
BUILDERable VALIDS for the GET currently being edited. The
GET variable name will be displayed on the top border of
this menu and the PgUp/PgDn keys will allow scrolling to the
previous and next window element.
This menu looks like the following screen sample.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║█Dialog█████║ Process ╔════════╡TEST╞═══════╗
╚══════════════║ TB╔═════════════════════════════════════║█Pick List Validate██║
░░░░░░░░░░░░░░░║ Fi║ Comment: ██████████████████████║ Check Character(s) ║
░░░░░░░░░░░░░░░║ Re║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required ║
░░░░░░░░░░░░░░░║ Ha║ ║ Display Text: ║ Duplicate Check ║
░░░░░░░░░░░░░░░║ Co╚════║ ███████████████████████████████║ In a File Validate ║
░░░░░░░░░░░░░░░╚════════║ Enhanced Color?: N (Y/N) ║ Generic Valid ║
░░░░░░░░░░░░░░░░░░░░░░░░║ ║ Right Justify Field ║
░░░░░░░░░░░░░░░░░░░░░░░░║ GET var: TEST██████ Length: ██║ Comment Only ║
░░░░░░░░░░░░░░░░░░░░░░░░║ Picture: ╚═════════════════════╝
░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize?: N (Y/N) ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize to: ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ █Valid█ Append Edit Help Delete ║░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit ▓
Select the type of valid you would like to attach to the
currently displayed GET variable using the up and down arrow
keys. Press ENTER on that selection to display the valid
entry dialog.
If a GET already has a valid attached, the GET variable name
will be surrounded by small arrow indicators. If the valid
menu is displayed the selected valid(s) will have arrow
indicators displayed on either side of the menu prompt and
the menu highlight bar will be positioned at the first
selected valid.
Note that you may attach more than one valid to a GET
variable if needed. However, in doing so it is very easy to
go beyond the character limit for a single line of code when
the code is generated. This may require some experimenta
tion and/or adjustments to the source code.
Also, some valids do not work well together. As a general
rule, do not attach more than one valid to a GET that
displays an error message.
Page: 69
To add or change a valid for the currently displayed GET,
simply select it from the menu. A screen is presented blank
if a preexisting valid is not found, or filled in if valid
data is found. Cursoring past the last field in the entry
window and answering Y (Yes) to the "Save This? (Y/N)"
prompt will save the valid. Press the ESC key to abandon
the changes. Pressing the Ctrl+PgDn key combination while
editing a previously saved valid will present a prompt
asking your confirmation to delete that valid.
Page: 70
ADDITIONAL ITEMS MENU - VALID - Pick List Validate
Selecting the "Pick List Validate" valid for a GET variable
will present a dialog window with a short description of
what this valid does and a number of entry fields needed to
create the valid. Following is a sample screen.
The "Pick List Validate" valid will create the source code
needed to make an indexed look up on a database of the
keyboard entry into the GET field. If the value keyed into
the GET field does not generate a FOUND() equal to .T.
(true), then a pick list is given to the user of the nearest
records in the database to what they entered. The user may
PgUp/PgDn/Up Arrow/Down Arrow to the desired record. If the
ENTER key is pressed the field data from the pick list
selection is entered into the GET field. If the ESC key is
pressed the pick list disappears and no action is taken.
The following screen shows the "Pick List Validate" entry
dialog:
█Change Window█ Add Window Files Options Colors Mode About Exit
╔═══════════════╗ Aeolus Software ║
║ Move Window ║ Test Builder 2.2 Application ║
║ Size Window ║══════════════════════════════════════════════════════════════╗
║ Move Elements ║ance█ Process ╔════════╡TEST╞═══════╗ ║
║█Edit Ele╔═════════════════════════════════════║ Pick List Validate ║════════╝
╚═════════║ Comme╔═══════════════════════════════════════════╗) ║░░░░░░░░░
░░░░░░░░░░║ Mes╔═ DIAL║ If the data entered into the GET does not ║ ║░░░░░░░░░
░░░░░░░░░░║ ║ Displ║ exactly match a SEEK into another file, ║ ║░░░░░░░░░
░░░░░░░░░░╚════║ █████║ have user select from a Pick List. ║e ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Enhan║ ║ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ File Alias: ████████ ║ld ║░░░░░░░░░
░░░░░░░░░░░░░░░║ GET v║ Field Number: ██0 ║ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Pictu║ Index Order: █0 ║═══╝░░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ QWERTY Scroll? █ (Y/N) ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initi║ Display Expression (evaluated as a macro) ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initi║ █████████████████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ Bounded By: ██████████ (fieldname) ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╔══════║ Required? █ (Y/N) ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ █V║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚══════╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
Note that before the "Pick List Validate" can be used in
your program the database will need to be created and opened
as will the index files. You may also want to create a file
maintenance routine for the look-up database. See the "Edit
Databases USEd" and "Modify Create Structure" under the
"Files" main menu option for more information on creating
and opening database and index files.
There are seven fields to be filled in for BUILDER to have
the information to create the "Pick List Validate", They
are:
Page: 71
File Alias: - This field is required but entry is not
checked. If you try to bypass this field a list of .DBFs in
the current directory will be presented for selection.
Enter the alias name of the database with which to verify
the GET entry.
Field Number: - Enter the ordinal field position in the
look-up database for the data to be placed in the GET field.
This field is required to be greater than zero. You must be
sure the field types and sizes in the look-up database and
your GET field match. See the Clipper documentation on the
FCOUNT(), FIELD() and FIELDNAME() functions for further
information on ordinal field positions.
Index Order: - This field is also required. Enter the index
order number to use to do an indexed search for the GET
input. Assistance with entry into this field is available
if there are index entries for the database entered for the
"File Alias:" field. The text "F10-Index List" will be
displayed on the bottom of the window when a list is
available.
QWERTY Scroll: - Enter either Y-Yes or N-No. If set to Yes
a 'field' will display on top of the pick list allowing the
user to enter alphabetic data as search criteria. QWERTY
Scroll is useful when traversing very large amounts of data.
Display Expression: - Enter a display expression using
fields from the look-up database and any database(s) related
to it. The expression entered here, when evaluated as a
macro, MUST evaluate to a character expression. This field
has a maximum size of 150 characters, the field will scroll
if you use more room than is available on the screen.
Bounded By: - If you would like to restrict access to a
subset of the database data, enter the look-up database
field name here. This field must be a part of the index
key preceding the field matching the GET field. The user
will only see the part of the look-up database where this
field remains exactly the same as when the pick list was
initially presented. If used you will need to make changes
to the Key Prefix Parameter for the call to the PCKVLD()
function in the generated source code. See the Func
tion/Procedure Guide documentation on the PCKVLD() function
for more information.
Required: - This field will accept either Y-Yes or N-No,
enter Yes if the GET field cannot be left blank. Enter No
if a blank is acceptable in this GET.
Page: 72
ADDITIONAL ITEMS MENU - VALID - Check Character(s)
Selecting the "Check Character(s)" valid for a GET variable
will present a dialog window with a short description of
what this valid does and the two entry fields needed to
create the valid. This screen looks like the following.
█Change Window█ Add Window Files Options Colors Mode About Exit
╔═══════════════╗ Aeolus Software ║
║ Move Window ║ Test Builder 2.2 Application ║
║ Size Window ║══════════════════════════════════════════════════════════════╗
║ Move Elements ║ance█ Process ╔════════╡TEST╞═══════╗ ║
║█Edit Ele╔═════════════════════════════════════║ Pick List Validate ║════════╝
╚═════════║ Comment: ██████████████████████║█Check Character(s)██║░░░░░░░░░
░░░░░░░░░░║ Mes╔═ DIAL╔═══════════════════════════════════════════╗ ║░░░░░░░░░
░░░░░░░░░░║ ║ Displ║ The GET Value Must be Contained in the ║ ║░░░░░░░░░
░░░░░░░░░░╚════║ █████║ Search String You Enter, or the Error ║e ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Enhan║ Message Will be displayed. ║ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ ║ld ║░░░░░░░░░
░░░░░░░░░░░░░░░║ GET v║ Search String: ██████████████████████████ ║ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Pictu║ Error Message: ██████████████████████████ ║═══╝░░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initi╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initialize to: ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ █Valid█ Append Edit Help Delete ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
The "Check Character(s)" valid function will verify that
input keyed into a GET variable is embedded in the search
string you supply. If the keyed value is not found, the
error message is displayed and the cursor will not proceed
to the next GET field.
For example if the GET variable is one byte long and is
required to contain a "Y" or "N" to indicate Yes or No, the
search string should be entered as "YN" (without the
quotes). If a blank space is acceptable the search string
should be entered as " YN". If the GET variable is more
than one byte in length a suitable delimiter should be used.
For example the search string "A1~B2~C4" would allow "A1",
"B2", or "C4" to be entered into a two byte field. The
delimiter is needed to try to prevent the acceptance of
erroneous input. For example if the previous example search
string were entered as "A1B2C4" then the erroneous input of
"1B" and "2C" would be allowed.
Note that the data type for the GET variable must be
character to use this valid function.
Search String: - Enter a value such that the following
returns true when the GET field is entered:
GetVariable $ SearchString
Page: 73
Where GetVariable is the data entered into the GET variable
and SearchString is the data you enter into the search
string field.
Error Message: - Message to be displayed on the line above
the bottom window border for the current window when invalid
input is entered.
Page: 74
ADDITIONAL ITEMS MENU - VALID - Field Required
The "Field Required" valid function can be attached to a GET
variable of any data type. If the GET variable is EMPTY()
the error message is displayed on the line above the bottom
window border and the cursor will not proceed to the next
GET field. This screen looks like this.
█Change Window█ Add Window Files Options Colors Mode About Exit
╔═══════════════╗ Aeolus Software ║
║ Move Window ║ Test Builder 2.2 Application ║
║ Size Window ║══════════════════════════════════════════════════════════════╗
║ Move Elements ║ance█ Process ╔════════╡TEST╞═══════╗ ║
║█Edit Ele╔═════════════════════════════════════║ Pick List Validate ║════════╝
╚═════════║ Comment: ██████████████████████║ Check Character(s) ║░░░░░░░░░
░░░░░░░░░░║ Mes╔═ DIALOG ═════════════╡Record: 1║█Field Required██████║░░░░░░░░░
░░░░░░░░░░║ ║ Displ╔═══════════════════════════════════════════╗ ║░░░░░░░░░
░░░░░░░░░░╚════║ █████║ The GET is Not Allowed to be EMPTY(), if ║e ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Enhan║ it is then the Error Message You Enter ║ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ Here Will be Displayed. ║ld ║░░░░░░░░░
░░░░░░░░░░░░░░░║ GET v║ ║ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Pictu║ Error Message: ██████████████████████████ ║═══╝░░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initi╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initialize to: ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ █Valid█ Append Edit Help Delete ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
This valid simply forces the GET field to be non-blank.
Only one field needs to be filled in to set up this
validation.
Error Message: - Enter the error message to display when an
attempt is made to cursor past the GET field while it is
empty.
Page: 75
ADDITIONAL ITEMS MENU - VALID - Duplicate Check
The "Duplicate Check" valid function attempts an indexed
lookup in a database to determine if the value entered into
the GET will create a duplicate key value. If ADDing a new
record the value of the GET must not currently exist in the
database. If CHANGing a record the value of the GET must
not exist in the database _except_ for the current database
record. Enter the following to have BUILDER create the
source code needed for a duplicate check:
Note that before the "Duplicate Check" can be used in your
program the database will need to be created and opened as
will the index files. You may also want to create a file
maintenance routine for the checked database. See the "Edit
Databases USEd" and "Modify Create Structure" under the
"Files" main menu option for more information on creating
and opening database and index files.
There are six fields to be filled in for BUILDER to have the
information to create the "Duplicate Check" valid. They
look like the following screen sample.
INSERT SCREEN BLDR031.SCR
Add/Chg Var: - The name of a character variable that will
contain the value "A" when ADDing a record or "C" when
CHANGing a record. Leave blank for GEN_MAINTs and
REL_MAINTs and BUILDER will enter the variable needed when
the code is generated.
File Alias: - This field is required but entry is not
checked. If you try to bypass this field a list of .DBFs in
the current directory will be presented for selection.
Enter the alias name of the database in which to verify the
Page: 76
GET entry. Almost always you will enter the alias name
where the GET data originated.
Index Order: - This field is also required. Enter the index
order number to use to do an indexed search for the GET
input. Assistance with entry is available if there are
index entries for the database entered in the previous
field. The text "F10-Index List" will be displayed on the
bottom of the window when a list is available.
Key Expression to SEEK for Duplicate Check: - Enter any
valid Clipper expression to do the indexed search. The GET
variable should be used somewhere in this expression.
Error Message: - The error message displayed if an attempt
is made to enter a duplicate key value into the GET field.
Required? (Y/N) - Enter "Y" if the GET cannot be blank, or
"N" if blank value is acceptable. If the GET is blank,
duplicate checking is not performed.
Page: 77
ADDITIONAL ITEMS MENU - VALID - In a File Validate
This valid function does essentially the same thing as the
"Pick List Validate", it only allows input into a GET if the
data keyed is located in a look-up database. The difference
with "In a File Validate" is instead of helping with a
picklist on erroneous input, it simply presents an error
message.
Note that before the "In a File Validate" can be used in
your program the database will need to be created and opened
as will the index files. You may also want to create a file
maintenance routine for the checked database. See the "Edit
Databases USEd" and "Modify Create Structure" under the
"Files" main menu option for more information on creating
and opening database and index files.
There are four fields to be filled in for BUILDER to have
the information to create the "In a File Validate", They
look like this screen.
█Change Window█ Add Window Files Options Colors Mode About Exit
╔═══════════════╗ Aeolus Software ║
║ Move Window ║ Test Builder 2.2 Application ║
║ Size Window ║══════════════════════════════════════════════════════════════╗
║ Move Elements ║ance█ Process ╔════════╡TEST╞═══════╗ ║
║█Edit Ele╔═════════════════════════════════════║ Pick List Validate ║════════╝
╚═════════║ Comment: ██████████████████████║ Check Character(s) ║░░░░░░░░░
░░░░░░░░░░║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required ║░░░░░░░░░
░░░░░░░░░░║ ║ Display Text: ║ Duplicate Check ║░░░░░░░░░
░░░░░░░░░░╚════║ ███████████████████████████████║█In a File Validate██║░░░░░░░░░
░░░░░░░░░░░░░░░║ Enhan╔═══════════════════════════════════════════╗ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ If GET Entry is Not FOUND() in a File then║ld ║░░░░░░░░░
░░░░░░░░░░░░░░░║ GET v║ Do Not Allow the Entry and Present the ║ ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Pictu║ Error Message. ║═══╝░░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initi║ File Alias: ████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initi║ Index Order: █0 ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ Error Message: ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╔══════║ █████████████████████████████████████████ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ █V║ Required? █ (Y/N) ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚══════║ ║░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
File Alias: - This field is required but entry is not
checked. If you try to bypass this field a list of .DBFs in
the current directory will be presented for selection.
Enter the alias name of the database in which to verify the
GET entry.
Index Order: - This field is also required. Enter the index
order number to use to do an indexed search for the GET
input. Assistance with entry is available if there are
index entries for the database entered in the previous
field. The text "F10-Index List" will be displayed on the
bottom of the window when a list is available.
Page: 78
Error Message: - If the data keyed into the GET is not found
in the look-up database the message entered into this field
will be displayed on the bottom line of your application
window.
Required? - If this GET can be blank then enter "N"-No it is
not required. Enter "Y" if it cannot be blank.
Page: 79
ADDITIONAL ITEMS MENU - VALID - Generic Valid
The "Generic Valid" validates the GET input based a logical
expression you enter. You may use any legitimate Clipper
expression that returns a logical value, you may use .AND.,
.OR., .NOT., and call functions (including your own UDFs) in
this expression.
There are three fields to be filled in for BUILDER to have
the information needed to create the "Generic Valid", They
look like this screen sample.
█Change Window█ Add Window Files Options Colors Mode About Exit
╔═══════════════╗ Aeolus Software ║
║ Move Window ║ Test Builder 2.2 Application ║
║ Size Window ║══════════════════════════════════════════════════════════════╗
║ Move Elements ║ance█ Process ╔════════╡TEST╞═══════╗ ║
║█Edit Ele╔═════════════════════════════════════║ Pick List Validate ║════════╝
╚═════════║ Comment: ██████████████████████║ Check Character(s) ║░░░░░░░░░
░░░░░░░░░░║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required ║░░░░░░░░░
░░░░░░░░░░║ ║ Display Text: ║ Duplicate Check ║░░░░░░░░░
░░░░░░░░░░╚════║ ███████████████████████████████║ In a File Validate ║░░░░░░░░░
░░░░░░░░░░░░░░░║ Enhanced Color?: N (Y/N) ║█Generic Valid███████║░░░░░░░░░
░░░░░░░░░░░░░░░║ ╔════════════════════════════════════════════════╗░░░░░░░░
░░░░░░░░░░░░░░░║ GET v║ The GET is Allowed if the Logical Expr ║░░░░░░░░
░░░░░░░░░░░░░░░║ Pictu║ Evaluates to .T., Otherwise the Error ║░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ Message Will be displayed. ║░░░░░░░░
░░░░░░░░░░░░░░░║ Initi║ ║░░░░░░░░
░░░░░░░░░░░░░░░║ Initi║ Logical Expression: ██████████████████████████ ║░░░░░░░░
░░░░░░░░░░░░░░░║ █████║ Error Message: ██████████████████████████ ║░░░░░░░░
░░░░░░░░░░░░░░░╔══════║ Required Field: N ║░░░░░░░░
░░░░░░░░░░░░░░░║ █V║ ║░░░░░░░░
░░░░░░░░░░░░░░░╚══════╚════════════════════════════════════════════════╝░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
Logical Expression: - As stated above, this is any valid
Clipper expression that returns a logical value. If the
result of this expression is false (.F.) the error message
will be displayed and the cursor will not be able to proceed
to the next GET. If the expression returns true (.T.) then
the cursor will proceed to the following GET.
Error Message: - The message to display if the logical
expression returns a value of false (.F.).
Required Field: - If this GET can be blank then enter "N"-No
it is not required. Enter "Y" if it cannot be blank.
Page: 80
ADDITIONAL ITEMS MENU - VALID - Right Justify Field
The "Right Justify Field" Valid function doesn't actually
'validate' the GET var, it simply right justifies the GET
data . The GET variable must be a character data type to
use this function. The entry window appears similar to the
following screen.
Change Window █Add Window█ Files Options Colors Mode About Exit
║ ╔════════════╗ Aeolus Software ║
║ ║ Menu ║t Builder 2.2 Application ║
╔══════════════║ Pick List ║══════════════════════════════════════════════════╗
║ █Maint║█Dialog█████║ Process ╔════════╡TEST╞═══════╗
╚══════════════║ Fi╔═════════════════════════════════════║ Pick List Validate ║
░░░░░░░░░░░░░░░║ Co║ Comment: ██████████████████████║ Check Character(s) ║
░░░░░░░░░░░░░░░╚═══║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required ║
░░░░░░░░░░░░░░░░░░░║ ║ Display Text: ║ Duplicate Check ║
░░░░░░░░░░░░░░░░░░░╚════║ ███████████████████████████████║ In a File Validate ║
░░░░░░░░░░░░░░░░░░░░░░░░║ Enhanced Color?: N (Y/N) ║ Generic Valid ║
░░░░░░░░░░░░░░░░░░░░░░░░║ ║█Right Justify Field█║
░░░░░░░░░░░░░░░░░░░░░░░░║ GET v╔═══════════════════════════════════════════╗ ║
░░░░░░░░░░░░░░░░░░░░░░░░║ Pictu║ The GET Value Will Be Right Justified and ║═══╝
░░░░░░░░░░░░░░░░░░░░░░░░║ █████║ Filled With the Fill Character Entered. ║░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initi║ May be Used Only With Character Fields! ║░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ Initi║ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ █████║ Fill Character: █ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░░░╔══════║ Use this VALID? █ (Y/N) ║░░░░
░░░░░░░░░░░░░░░░░░░░░░░░║ █V║ ║░░░░
░░░░░░░░░░░░░░░░░░░░░░░░╚══════╚═══════════════════════════════════════════╝░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
Fill Character: - Enter the fill character when right
justifying the variable. Usually space or zero. For
example if the fill character is space and the GET variable
entered looks like
"12 ", using the "Right Justify Field" Valid function
would cause it to look like " 12". Using a zero as the
fill character would change the GET variable from "12 "
to "000012".
Use this VALID? - Enter Y to use this Valid function or N
not to use it.
Page: 81
ADDITIONAL ITEMS MENU - VALID - Comment Only
The "Comment Only" option is useful when you will be writing
a custom valid function and want to leave yourself messages
in the source code. Or just need to leave a unique note
about this particular GET variable. There is only one field
in the entry window for this option.
Field Comment: - Enter comment text. Your comment will be
put in the generated source code following the @...GET
command.
Page: 82
ADDITIONAL ITEMS MENU - IMPORT
Select the "Import" option for the "Additional Items" menu
to add elements to a dialog or file-maintenance window using
the fields of a .DBF database or the BUILDER data
dictionary.
Selecting "Import" will first present a menu to select
between a data dictionary for .DBF import. Then a list box
of available .DBF databases for the selection is given. If
no databases exist in the default directory an error message
is presented. The "Create/Modify Structure" BUILDER menu
option will allow you to create .DBF database structures if
needed.
Select a database from the list box using the up and down
arrow keys and the page up and page down keys to move the
highlight pointer to the desired database. Once selected a
list box is presented with a list of all the fields in the
selected database. Tag each of the fields you would like to
append into the dialog or file-maintenance window to which
you are adding.
Use the up and down and the page up and page down keys to
move the highlight pointer. Press "T" to toggle a field as
tagged/untagged. Press "A" to tag all the fields or "U" to
untag all the fields. A field is tagged when it is
surrounded on either side by 'baby double parenthesis'.
Import field tag screen sample.
█Change Window█ Add Window Files Options Colors Mode About Exit
╔═══════════════╗ Aeolus Software ║
║ Move Window ║ Test Builder 2.2 Application ║
║ Size Window ║══════════════════════════════════════════════════════════════╗
║ Move Elements ║ance█ Process Reports ║
║█Edit Ele╔══════════════════════════════════════════════╗═════════════════════╝
╚═════════║ Comment: ██████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░║ Mes╔═ DIALOG ════════╔═════════════════════╗══╗░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░║ ║ Display Text: ║█PRDCT_NBR██C██10██0█║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░╚════║ ████████████████║ SERL_NBR C 12 0 ║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Enhanced Color?:║ CSTMR_NBR C 5 0 ║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ║ SYSTEM_ID C 5 0 ║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ GET var: ███████║ QUANTITY N 3 0 ║ ║░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Picture: ║ CATEGORY C 4 0 ║═══╗░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████║ COST N 10 2 ║DBF║░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initialize?: N (║ ASSET_NBR N 4 0 ║BF ║░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Initialize to: ║ ASSET_IDNO N 4 0 ║ ║░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ ████████████████╚═════════════════════╝ ║░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╔═══════════════════║ from Data║ ║░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░║ Valid █Append█║ from .DBF║ ║░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░╚═══════════════════╚══════════╚════════════╝░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▓ PgUp/PgDn-Scroll ▓ T-Tag Toggle ▓ A/U-Tag/Untag All ▓ ESC-Exit ▓
Press ESC when all the desired fields to be added have been
Page: 83
tagged. They will then be added as window elements. The
field name will entered in both the "Display Text" and the
"GET var" fields. The field size and type will also be
entered where applicable.
Page: 84
ADDITIONAL ITEMS MENU - EDIT HELP
The "Edit Help" menu option, when selected from the
"Additional Items" menu, creates a detail help screen for
the current GET variable in the current prototype window.
Each GET variable may have its own help screen. This help
screen will be accessible by the user of your application
when the current window is in use and their cursor is
located in the GET variable.
Enter text into the help screen window as you would like it
to appear for the users of your application. Use the arrow
keys to navigate inside the window. The text will word wrap
at the right border. Page Up/Down will scroll one screenful
of text backward and forward. You will be limited to as
many lines of text as the "Options" maximum help lines
setting allows. This limitation can be changed and is
located under the "Options" main menu selection.
Press Ctrl+W to save a help screen or ESC to abandon the
changes.
Often many help screens in a system will be identical, or
very nearly identical. Press the F10 key to present a
picklist of all the help screens. Use the Up/Down and Page
Up/Page Down keys to move the highlight pointer. Press
ENTER to copy the highlighted help screen into the current
help screen, the copied help data will always be
appended to the end of text in the current help window.
Press ESC to abandon the help screen copy.
Page: 85
ADDITIONAL ITEMS MENU - DELETE
When selected a confirmation window will be presented.
Press Y to delete all the elements in the current window,
this will effectively delete the window from the application
prototype. Press N or ESC and no delete will occur and
control will be returned to the "Additional Items" menu.
Page: 86
CROSSHAIRS
The crosshairs are simply a red vertical line and a red
horizontal line displayed on the screen. The crosshairs are
only visible during active crosshair operation, they will
not be displayed when not in use. They are used to mark a
spot on the screen you want to remember. For example, if
you want to construct many windows in the exact same
location. You could set the crosshairs to the desired
location and they would retain that position until you exit
the BUILDER program or move them. Then when you finish each
of the many windows, press the crosshair key to see if the
window lines up to your crosshair location. Use the BUILDER
"Move Window" feature to move the window until it
corresponds with the crosshairs.
Crosshair operation is simple and straightforward, these
keys are available during crosshair use:
Alt+R - will activate the crosshair anytime during BUILDER
program execution.
Up/Down Arrows - will move the horizontal crosshair up/down
one screen row.
Ctrl + PgUp/PgDn - will move the horizontal crosshair to the
top-most/bottommost screen row.
Right/Left Arrows - will move the vertical crosshair
right/left one screen column.
TAB/Back TAB - will move the vertical crosshair right/left
ten screen columns.
Ctrl + Right/Left Arrows - will move the vertical crosshair
to the rightmost/leftmost screen column.
ESC - will exit the crosshair routine and return to the
BUILDER function before the crosshair was activated.
Page: 87
F1 HELP SYSTEM
There are two, yes two, help systems with respect to
BUILDER. One is the F1 help system used by your application
and the other is the F3 help system that allows you to get
context sensitive help when executing the BUILDER or BREPORT
programs.
This section deals with the former, the help system
incorporated into your applications.
When you create a BUILDER application prototype, one of the
first questions you must answer is if you would like a help
system incorporated into your application. If you answer
yes, then the F1 key will activate a context sensitive help
system in your application. If you answer no, then the help
system source code will not be created and the F1 key won't
do anything.
Regardless of whether you say yes or no to a help system for
your application, the file HELP.DBF/.DBT is created and
seeded with general help screens. You will also be able to
enter help additional screens in BUILDER if you answered no.
The reason for this is twofold. One, you might change your
mind and at a later time include a help system. Two, (and
more important) when a help system is not being incorpo
rated, the BUILDER help screens make an excellent place for
programmers notes. Using the help screens for programmers
notes is especially useful when several people participate
in developing an application.
The BUILDER generated help system recognizes seven specific
access points. Each access point can have two help screens.
Help screen one being "General" help, and help screen two
"Detail" help. Six of the seven access point "General" help
screens are very generic, and are automatically created by
BUILDER. All other help screens are unique to the
application and must be created by the programmer,
application user or both.
The seven help system access points are:
1. Menus.
a. General help automatic.
b. Detail help custom per function.
2. Dialog Boxes.
a. General help custom per function.
b. Detail help custom per GET field.
3. Picklists.
a. General help automatic.
Page: 88
b. Detail help custom per function.
4. File Maintenance Windows (while using it's menu)
a. General help automatic.
b. Detail help custom per function.
5. File Maintenance Windows (while editing the GETs).
a. General help automatic.
b. Detail help custom per GET field.
6. REL_MAINT() execution (while using menu).
a. General help automatic
b. Detail help custom per function.
7. REL_MAINT() execution (while editing GETs).
a. General help automatic.
b. Detail help custom per GET field.
8. TBrowses.
a. General help automatic.
b. Detail help custom per function.
Each "General" help screen is a 'how to' screen which
answers what each available keyboard key will do. Each
"Detail" help screen is a 'why is it here' screen. For
example a "Detail" help screen for a system menu should
describe what each menu prompt is for.
In the above list, each help screen that is "custom per
function" should answer the question 'What is this window
for?'. Each help screen that is "custom per GET field"
should answer the questions "What are the allowable values
for this field?" and "What does this field do?".
Your Quesions on the Help System:
Q. Where in BUILDER do I edit which type of help screen?
A. If you see the question "Edit Help?" and there is a
field for the cursor, answering Y-Yes will edit a help
screen for a 'function'.
If you select "Edit Help" from a menu you will be editing a
help screen for a 'GET field'.
Q. O.K., but there isn't a REL_MAINT() window in BUILDER!
How do I edit it's help screens?
A. A REL_MAINT() is a converted dialog box. The conversion
is very simple, but is done by hand. A dialog box "General"
help screen will be used as a REL_MAINT() menu detail help
Page: 89
screen (6-b in the above list). Dialog box GET field help
screen will be used as REL_MAINT() GET field detail help
screens (7-b in the above list). The other two types of
REL_MAINT() help screens are automatically created by
BUILDER. See the BUILDER Library Reference Guide for more
information on the REL_MAINT() function. (Doing this is
MUCH easier than it sounds)
Q. Can I add/edit help screens in the application program?
If so how?
A. Yes. There is a field in OPTIONS.DBF (created for every
BUILDER application) called HELP_EDIT. It is a one byte
character field and when it contains the value "Y" will
allow help screens to be edited/added during application
execution.
If the HELP_EDIT field is NOT equal to "Y" the help system
will not allow any editing or adding of help screens. Also,
if the F1 key is pressed and there is no "General" and no
"Detail" help, a message box is displayed indicating no help
is available. If the F1 key is pressed and there is only
"General" or only "Detail" help available, then that screen
is displayed. If the F1 key is pressed and both "General"
and "Detail" help are available, the "Detail" help screen is
displayed and the message "F1-General/Detail Toggle" is
displayed on the bottom border of the help screen. If both
help screens are available, pressing the F1 key will switch
between "General" and "Detail" help screens.
If the HELP_EDIT field is equal to "Y" the help system will
allow editing and adding of help screens. Whenever the F1
key is pressed the current help screen is displayed and the
cursor is positioned at the end of the help text. If no
help screen is available, the cursor is set in a blank help
screen. Pressing the F1 key while editing a help screen
will always toggle between the "General" and "Detail" help
screens. If any new help screens are added from the
application, the title will have to be entered into HELP.DBF
using another means (dBASE for example). Use the arrow keys
and PgUp/PgDn to position the cursor. Enter help text as
you would like it to appear. Press Ctrl+W to save a help
screen or ESC to abandon the changes.
Caution: Pressing ESC will erase all changes to a help
screen!!
Q. What if I don't like one or more of the 'automatic' help
screens?
A. Each of the 'automatic' help screens can be overridden.
Page: 90
See the section in this document titled "Default OPTIONS and
Help" for details on how to substitute your own help screens
in place of the BUILDER 'automatic' help screens.
Q. What if I have many very similar or identical help
screens?
A. Whenever you are editing a help screen in the BUILDER
program, the message "F10-Copy" will be displayed on the
bottom help screen border. Simply press the F10 key to
present a pick list of all the help screens already entered.
Use the Up/Down arrows and Page Up/Page Down keys to move
the highlight pointer. Press ENTER to copy the selected
help screen into the current help screen. Press ESC to
abandon the help screen copy.
Page: 91
F3 HELP SYSTEM
If you copy a help screen, it will be appended to the end of
the current help screen.
This is the help system that provides you with information
about field entry and system operation within the BUILDER
and BREPORT programs.
If you would like help during BUILDER or BREPORT execution,
press the F3 key. There is a help screen available almost
everywhere in the BUILDER and BREPORT programs.
Press PgUp/PgDn to view more text.
Press ESC to exit BUILDER/BREPORT help.
Page: 92
DEFAULT OPTIONS AND HELP.
Setting up a personal set of BUILDER defaults:
You may set your own default values for each field in the
"Options" screen of the BUILDER main menu. That way
whenever you create a new BUILDER application, your name is
already entered in the "Name" field etc. Also any custom
fields you may want to add to OPTIONS.DBF, for example
printer control string fields, can be automatically
incorporated into each new BUILDER application. All you
need to do is put the file OPTIONS.DBF that contains your
default values and any additional fields in the same
subdirectory where BUILDER.EXE is located . That's it! Now
every time you start a new BUILDER application, your
OPTIONS.DBF will be used instead of BUILDER creating a new
blank one.
Setting up custom automatic help screens:
You may customize any one or all of the automatic help
screens. See the section in this manual entitled 'F1 help
system' for more information on what constitutes an
automatic help screen. Of the seven help access points, six
have automatic "General" help screens. When BUILDER is
executed for the first time in a new subdirectory, one of
the databases created is HELP.DBF/.DBT. This file contains
all the help screens that will be used in your application.
BUILDER automatically seeds this file with six help screens.
When each record is added, (one for each of the automatic
help screens), the override file is searched for in the
current DOS directory. If the override file is found, that
text is used as the help text for that automatic help
screen. If the override file was not located in the current
DOS directory, then BUILDER searches the subdirectory where
BUILDER.EXE is located, and if the override file is found,
that text is used as the help text for that automatic help
screen. If the override file is not found in either of
these places, then the default automatic help text is used.
The override files MUST have the correct filename for
BUILDER to 'see' it. Also the file must be placed in the
proper subdirectory as per the previous paragraph. Help
override files are simple CR/LF delimited text files. The
widest record in the text file should not exceed 60
characters (the width of the help window).
The six possible override filenames are as follows:
MENUGEN.HLP - Menu function "General" help.
PLSTGEN.HLP - Picklist function "General help".
FMNTMNU.HLP - File maintenance menu "General" help.
Page: 93
FMNTGEN.HLP - File maintenance GETs "General" help.
REL_MNU.HLP - Related file maintenance menu "General" help.
REL_GEN.HLP - Related file maintenance GETs "General" help.
Note that these files are not part of the BUILDER files and
are not created by BUILDER. They are strictly created by
BUILDER users who want different help screens than the
defaults.
Page: 94
CONVERTING FROM BUILDER 1.0 OR 2.0
For BUILDER version 1.0 or 2.0 users who want to convert to
version 2.2. Simply execute BUILDER (version 2.2) in the
same subdirectory where BUILDER 1.0 or 2.0 created files
reside. BUILDER 2.2 will automatically detect the older
version files and display the following message:
****** OLD BUILDER VERSION FILES ******
The files in this subdirectory are from a previous version
of BUILDER. You may convert them now or exit to DOS. If
you choose to convert, they will NOT work with the older
version!
Press C-Convert the files or E-Exit the program
When this message is on the screen, press the C key on the
keyboard to convert the files. If you're not sure you want
to make the switch, press the E key and no changes will be
made.
Page: 95
SUGGESTIONS
USE THE 30 BYTE COMMENT FIELD ON EVERY WINDOW YOU CREATE,
THE PROC MAP AT THE BEGINNING OF EACH GENERATED APPLICATION
WILL BE MUCH (LET ME REPEAT THAT) *MUCH* MORE READABLE!
====== When you begin an application, setup the root menu
and then as soon as possible after that create your
databases. Next add all the needed databases and indexes to
the "Databases USEd" list for the application. This will
make naming variables and creating File Maintenance and
Dialog windows easier because you can import directly from
database structures. It is highly advisable to enter ALL
memory variables into the data dictionary - this is the only
way Builder can know that it is a memory variable. Not
entering memory variables into the data dictionary will
cause the generated source code to contain unscoped memory
variables in the program.
At this point, decide if you will be using the BUILDER data
dictionary. If you are going to use it, then initialize the
data dictionary from either your database list or another
BUILDER data dictionary. And enter all the dictionary field
and memory variable defaults for your application.
Again, don't use a .PRG extension on your generated source
code, you will overwrite something you worked on by hand
sooner or later. BUILDER attempts to keep you from doing
this, but it is possible to override.
Cut from .PR1 files and paste into .PRG files to make
changes to previously generated program source. This is
made simple by the way BUILDER creates source code. If you
have a newly updated .PR1 file with code that needs to be
copied into your .PRG. Use the Proc Map to locate existing
code and update the window function. This is very easy
because no matter how many changes you make to any window
type, what you will be updating are the SAYs and GETs, and
these will almost always be grouped together. Also, since
new windows are appended to the end of each source procedure
section, search keys are provided for easily locating the
newest windows.
If you are adding new window functions, the task is even
easier. First update the Proc Map at the beginning of the
target application's source file. Next locate the end of
the window type to which you will be adding new functions .
Use the end markers for this, search for ENDMENU, ENDHAND,
ENDDLOG, ENDPLST, ENDFMNT, ENDRMNT, or ENDBRWS to locate
the last function for each window type. Then simply copy in
the new functions after the last function and before the end
marker.
Page: 96
There will still be work that you must do by hand. The
BUILDER is not designed to produce completed applications,
only the time-consuming (boring?) repetitive tasks.
How to attach a window or string of windows to a SET KEY
TO... ? You simply create a menu option somewhere called
"DUMMY" and create the window chain you will call with the
the SET KEY TO... command. When the code is generated,
remove the "DUMMY" menu option. Now connect the two windows
by entering the SET KEY TO... command by hand, and doing any
testing in the called function.
Make the BUILDER prototype as complete as possible before
generating code. Show your users the prototype using the
BDEMO.EXE program (registered users only) and don't code
anything until the design is finalized. You will be
happier, they will be happier, and the project will be
completed sooner. Big design changes after you've been
working on the code by hand for a week can set a project
back a long way. On the other hand, adding new windows is
relatively easy. Try to make screen changes in BUILDER and
avoid making anything but small screen changes in the code.
Working on the source by hand, steps:
Step one. Modify any connections first, reroute procs where
you need them to go, BUILDER can't connect things perfectly.
Your application may have multiple routes to a single
window, this is an example of rerouting a window by
programming by hand. This rerouting is often no more than
entering a call to the window function in the source code
file.
Step two. Add any needed code to dialog boxes. I usually
add a "Hand Code Section" following a dialog box to perform
small tasks and enter only comments when large amounts of
logic are needed. I like to enter the larger logic in the
source file and not in a "Hand Code Section".
Step three. The final step in a BUILDER generated
application is to add your own logic, this is typically the
guts of the program. This requires you to develop program
code from scratch and in a typical BUILDER application
comprises about 10% of the program. This programming is
unique to the application and is typically internal logic
that doesn't require much user interaction.
Step four. Test, test, and test. Done?
New functions and procedures should be added in a separate
.PRG file. This keeps the proc map clean and your
procs/funcs are easier to find during debugging. If these
require access to database fields, remember to pass the
Page: 97
database STATIC arrays to any external functions, also
remember to # include the header (.ch) that contains the
database field definitions for your application.
Page: 98
APPENDIX A - How to Operate Generic File Maintenance Windows.
When you create a file maintenance window using BUILDER.
Code will be generated that calls the Generic File
Maintenance routine in the BUILDER Library.
When initially presented, a file maintenance window will
display the fields at the CURRENT RECORD LOCATION. A menu
centered on the top border line of the window will be in
control. Select "Add", "Change", "Delete", or "Find" from
the menu by moving the highlight bar over that selection and
pressing ENTER, press PgUp or PgDn to display the previous
and next records, or press ESC to exit the file maintenance.
When "Add" is selected the Key fields will be presented in a
sub-window, enter the complete key data for an "Add"
afterwhich the cursor will be positioned in the rest of GET
fields, enter the data. When finished, the prompt "Add
Record? (Y/N)" will be presented. Answer Y-Yes or N-No to
the confirmation.
When "Find" is selected the Key field will be presented in a
sub-window also, however, enter the minimum needed to locate
the desired record for a "Find" and the record nearest to
the data entered will be displayed.
If your file maintenance doesn't have any "Key" fields, then
a "Duplicate Keys" file maintenance routine will be created.
This will function the same as the "Keyed" file maintenance
except the Key Fields sub-window will not be available.
If "Change" is selected the cursor is positioned to the non-
key fields, after field entry the confirmation prompt "Save
Changes? (Y/N)" is given and the changes will only be saved
if the user press the "Y" key on the keyboard.
If Delete is selected the confirmation prompt "Delete
Record? (Y/N)" is presented. The record will only be
deleted if the user presses the "Y" key on the keyboard.
All results of confirmation prompts are displayed after they
are completed.
Page: 99
APPENDIX B - The Generated Source Code
CODE ORGANIZATION
The source code generated will contain up to eleven major
sections. These are:
I Initialization
II Menus
III Hand Code
IV Dialog Boxes
V Relation Maintenance
VI TBrowse's
VII Pick List Boxes
VIIII File Maintenance Boxes
IX Index Checking
X Database and Index File Opens
XI Help System (Summer '87 only)
I. Initialization.
The initialization section of the program is located at the
beginning of the generated program and it contains twelve
simple program sections.
1. Program and author identification comments.
2. Proc map comments.
3. #includes and PRIVATE/STATIC memory variable declara
tions.
4. Database field array initialization procedure.
5. Some SET ... commands.
6. Open the OPTIONS.DBF database.
7. Set colors and other defaults from the data in
OPTIONS.DBF.
8. Display desktop and screen header.
9. Execute the check index proc.
10. Execute the Open databases and indexes proc.
11. Execute root menu loop.
12. Exit program.
The initialization should be easy to decipher and the
sections should be readily identifiable, each is commented.
You should have no difficulty if you want to add your own
initialization code to what is there.
Commonly you can add fields to OPTIONS.DBF and include your
own default values in section 6 of Initialization, some of
this is done automatically by Builder. User added fields to
OPTIONS.DBf are declared and initialized by Builder.
II. Menus.
After the initialization code, the root and other menus will
Page: 100
follow, each menu will be in a separate proc called MENUnnn
where nnn is equal to the window number assigned by BUILDER.
Note that the root menu will not have a number and the proc
will simply be called MENU.
Each menu proc is prefixed by a comment box which indicates
what type of proc called the menu and also includes the
comment entered from BUILDER.
The color is set, the window is displayed and the menu
variable is initialized before the loop is started. The
WINDOW Builder command is called to display the screen
window.
A message line is displayed. All menus called directly by
the root menu will contain calls to TTLKEYON and TTLKEYOFF,
these procs enable left and right scrolling for drop down
menuing systems.
For Summer '87 style code:
The menu prompts are displayed and the MENU TO ... command
is executed. A CASE statement follows which reacts to each
menu option that has a window attached to it. The ESC key
is trapped in the CASE to exit the menu.
For Clipper 5.x style code:
The menu prompts are displayed using the Builder WINPROMPT
command with a code block parameter to indicate what to
execute for each menu option. The BUILDER Menu() function
is then called to execute the menu.
If you included an F1-Help system in your BUILDERed
application there will be a VARPUSH() and a VARPOP() on proc
entry and exit points. This tells the Help System what help
screen to display.
After the menu the window and the screen area used by the
menu is cleared and the proc is concluded.
Example menu program code:
************************************************************
*******************
** CALLED BY: Selection << File Maintenance >> in Proc:
MENU002 **
** Comment: File Maintenance Menu
**
************************************************************
*******************
PROCEDURE Menu004()
LOCAL aMenuArray := {}
LOCAL nOpt2
Page: 101
SETCOLOR(Var(MENU_CLR_))
@ 10,20,13,34 WINDOW STYLE "--" NOSHADOW
VarPush("MENU004")
nOpt2=0
SetMsgLin("_ Up/Down, Left/Right-Move Pointer _ ENTER-
Select _ ESC-Exit _")
SETCOLOR(Var(MENU_CLR_))
@ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE
Hand025()
@ 02,01 WINPROMPT " Sample " TO aMenuArray EXECUTE
Hand104()
nOpt2 := Menu(aMenuArray,nOpt2)
VarPop()
WINDOW REMOVE
III. Hand Code.
Hand Code functions are included in the source code only if
at least one Hand Code Section is defined in the BUILDER
prototype.
Following the menus, will be all the functions containing
the Hand Code you have entered. Each will consist of a
comment indicating what function called the Hand Code, and
the comment for the current function. There will be a
function declaration followed by the Hand Code entered for
that function.
IV. Dialog Boxes.
Dialog procedures are included in the source code only if at
least one dialog box is defined in the BUILDER prototype.
The dialog box procs follow the hand code. Dialog box logic
can take one of three forms, depending on whether any GETs
are entered for that dialog. If GETs are available for the
dialog box a READ command is executed, otherwise a WAITKEY()
is put in the DO WHILE loop. The WAITKEY() and DO WHILE
loop are omitted, however, if the dialog box has no GETs and
is followed by a "Hand Coded Section".
Each dialog box begins with a comment box that indicates
what type of proc called the dialog and also includes the
comment entered from BUILDER.
First the Builder WINDOW command places an empty window on
the screen.
Page: 102
The color is set and the SAYs for the dialog are executed.
After the SAYs the dialog variables, if any, are initial
ized. Notice that the initialization data from BUILDER is
not checked and it is possible to create un-compilable
source in this area.
Inside the DO WHILE loop the dialog GETs, if any, are
executed. Also inside the DO WHILE is a SetMsgLin() function
to display the message line information you entered in
BUILDER.
The GETs will call any of the BUILDER Library VALIDs you
selected when you created the dialog.
The ESC key is trapped to exit the dialog.
If you included an F1-Help system in your BUILDERed
application there will be a VARPUSH() and a VARPOP() on the
entry and exit points. This tells the Help System what help
screen to display.
Dialog proc example code.
************************************************************
*******************
** CALLED BY: Selection << Bounded by Option >> in Proc:
MENU003 **
** Comment: Bounded by Picklist (By State)
**
************************************************************
*******************
PROCEDURE Dlog028()
LOCAL x,GetList := {},mState
VarPush("DLOG028")
SETCOLOR(Var(WNDW_CLR_))
@ 13,24,19,67 WINDOW STYLE "3+"
SETCOLOR(Var(WMSG_CLR_))
@ 01,02 WINSAY "The Following Picklist Will Only Display"
@ 02,02 WINSAY "Records From the State You Select."
SETCOLOR(Var(WNDW_CLR_))
@ 04,02 WINSAY "State Code:"
mState := Space(02)
DO WHILE .T.
SetMsgLin("_ Enter State Code _ ESC-Exit _")
@ 04,14 WINGET mState PICTURE "!!" VALIDBLOCK ;
{|| ;
Page: 103
GenVld(In_Usa(GETACTIVE():varGet()), ;
"Enter a Valid U.S. State Code", ;
WinBott()-1,WinLeft()+2,WinRight()-
2,.T.,Var(WERR_CLR_))}
ReadGets(@GetList)
IF LASTKEY() == K_ESC
EXIT
ENDIF
** You may want to do some validations here **
** before executing the next proc. **
Hand056(mState)
ENDDO
VarPop()
WINDOW REMOVE
V. Relation Maintenace.
One bad thing about Builder Rel_Maint()'s is each will be
generated with between one and five PRIVATE variables. A
VarPush() is entered in source where a Help system has been
requested. This is followed by creation of the window. The
Builder WINSAY command displays data in the window.
The database to be edited is then selected as the default
work ared and the index order is established.
Next, the relation data for adding new records is set. The
database is positioned, and finally the Rel_Maint() function
is called. The Rel_Maint() function makes calls to the
function of WINGETs that follows each RMNT procedure created
by Builder.
In the GET function, the database relation fields are set
and the WINGETs are performed. If Rel_Maint() is executing
the GET function for and Add or Change condition, a READ is
performed.
Back in the RMNT procedure, after the Rel_Maint() call, a
VarPop() sets the Help array to point to the previous
window, the window is removed from the screen and the
procedure is exited.
************************************************************
*******************
** CALLED BY: Pick List Window: PLST061 Rel_Maint()
Sample **
** Comment: Rel_Maint() Sample (Maint)
**
Page: 104
************************************************************
*******************
PROCEDURE Rmnt062()
LOCAL xBounds
PRIVATE cRelKey1
VarPush("RMNT062")
SETCOLOR(Var(WNDW_CLR_))
@ 05,00,12,29 WINDOW STYLE "3+"
@ 02,02 WINSAY "First"
@ 03,03 WINSAY "Last"
@ 05,02 WINSAY "Phone"
DBSELECTAREA("Friends")
Friends->(DBSETORDER(1))
// Set Relation Key Fields
cRelKey1 := Cities->City
Friends->(DBSEEK(Cities->City,.F.))
xBounds := Cities->City
Rel_Maint(WinTop(),WinLeft(),WinBott(),WinRight(),"062",{||x
Bounds==Friends->City}, ;
"FRIENDS",aFriends,2,"ACD")
VarPop()
WINDOW REMOVE
FUNCTION Get062(cG_Func)
LOCAL x,GetList := {}
// Set Relation Key Fields
BCITY := cRelKey1
@ 02,08 WINGET BFNAME PICTURE "!xxxxxxxxxxxxx" VALIDBLOCK
;
{|| ;
Req("First Name Required", ;
WinBott()-1,WinLeft()+2,WinRight()-
2,Var(WERR_CLR_))}
@ 03,08 WINGET BLNAME PICTURE "!xxxxxxxxxxxxxxxxxxx"
@ 05,08 WINGET BPHONE PICTURE "@R (999) 999-9999"
IF cG_Func$"AC"
ReadGets(@GetList)
ENDIF
RETURN(NIL)
VI. TBrowse.
Page: 105
The Builder TBrowse procedures initialize a Clipper TBrowse
object, adding a two dimensional 'dictionary' array of
additional items to the :cargo instance variable. Likewise
each column object is initialized with a similar 'dictio
nary' added to its :cargo instance variable. These
'dictionary' arrays allow add functionality to these
objects. The controls are all entered by Builder (except
the "BNDKEYS" and "ORDEXCPT" values) and are used by the
Builder BrowseDb() function.
In the source code, first a number of local variables are
declared to hold the window dimensions, sundry items,
objects, dictionary arrays, and saved system values.
If a Help system has been incorporated into your system, a
VarPush() is executed to tell Help what to display.
The window coordinate variables are initialized.
The database to be browsed is selectec as the default work
area and the index order is established.
The browse object dictionary array is initialized, followed
by initializing a TBrowse object.
Each column in the TBrowse is initialized by first setting
its dictionary array and then initializing the column
object. The column object is then added to the browse
object. This is repeated for every column on the browse.
After the browse object is initialized, a window is
displayed on the screen.
Then a DO WHILE loop is executed in which a message line is
displayed, the browse ojbect's mouse controls are set up,
and the browse is performed. If the browse function returns
a logical FALSE (ESC key pressed) the loop is exited and the
procedure terminated. If the browse function returns a
logical TRUE (Ctrl+ENTER key pressed), the browse object's
mouse controls are turned off and the next window procedure
is executed.
************************************************************
*******************
** CALLED BY: Hand Code: HAND149 Position TBrowse
Database **
** Comment: TBrowse Demo
**
************************************************************
*******************
PROCEDURE Brws146()
LOCAL nBr1,nBc1,nBr2,nBc2
Page: 106
LOCAL x,xBound,nDisplayRow
LOCAL oBrwObj,oColObj
LOCAL aBrwCtrls := {},aColCtrls := {}
LOCAL cOldColor := SETCOLOR(Var(BRWS_CLR_))
LOCAL cDbStatus
VarPush("BRWS146")
nBr1 := 07
nBc1 := 12
nBr2 := nBr1+12
nBc2 := nBc1+55
DBSELECTAREA("Cities")
Cities->(DBSETORDER(2))
// Add Browse Controls to a Control Dictionary
DictPut(aBrwCtrls,"FREEZE",.T.) // Freeze Control
DictPut(aBrwCtrls,"DELETE",.T.) // Delete/Recover
Control
DictPut(aBrwCtrls,"AWIDTH",.T.) // Adjust Column
Width Control
DictPut(aBrwCtrls,"CHGORD",.T.) // Change Index
Order Control
DictPut(aBrwCtrls,"IDXSRC",.T.) // Index Search
Control
DictPut(aBrwCtrls,"APPEND",.F.) // Append Records
Control
DictPut(aBrwCtrls,"APPVAL",.F.) // Append Mode
Variable
DictPut(aBrwCtrls,"RECNBR",.T.) // Record Number
Visible @Start
DictPut(aBrwCtrls,"RECTGL",.T.) // Record Number
Column Toggle Control
DictPut(aBrwCtrls,"DELREC",.F.) // Delete Database
Record Control
DictPut(aBrwCtrls,"BOUNDS",NIL) // Bounded by Block
DictPut(aBrwCtrls,"HGLTBAR",NIL) // Highlight Bar
Color Pair
DictPut(aBrwCtrls,"BNDPFX",NIL) // Bounded by Prefix
DictPut(aBrwCtrls,"BNDKEYS",NIL) // Bounded by Key
Init
DictPut(aBrwCtrls,"ORDEXCPT",{}) // Idx Orders to X
from List
// Initialize the TBrowse Object
oBrwObj := TBrowseDb(nBr1+1,nBc1+1,nBr2-2,nBc2-1)
oBrwObj:cargo := aBrwCtrls
oBrwObj:goBottomBlock := {||AbGoBottom(oBrwObj)}
oBrwObj:goTopBlock := {||AbGoTop(oBrwObj)}
oBrwObj:skipBlock := {|x| AbTBSkip(x,oBrwObj)}
oBrwObj:colorSpec :=
Page: 107
Var(BRWS_CLR_)+","+Var(BRWS_HL1_)+","+Var(BRWS_HL2_)
oBrwObj:headSep := "---"
oBrwObj:colSep := " | "
oBrwObj:footSep := "---"
// Add Column Objects to the TBrowse Object
aColCtrls := {}
DictPut(aColCtrls,"EDITABLE",.F.)
DictPut(aColCtrls,"PICTURE",NIL)
DictPut(aColCtrls,"COLNBR",1)
DictPut(aColCtrls,"VALID",NIL)
DictPut(aColCtrls,"EXECBLK",NIL)
DictPut(aColCtrls,"GETBLK",FIELDBLOCK("CITY"))
oColObj := TBColumnNew("City", ;
{||Cities->City})
oColObj:cargo := aColCtrls
oBrwObj:addColumn(oColObj)
aColCtrls := {}
DictPut(aColCtrls,"EDITABLE",.F.)
DictPut(aColCtrls,"PICTURE",NIL)
DictPut(aColCtrls,"COLNBR",2)
DictPut(aColCtrls,"VALID",NIL)
DictPut(aColCtrls,"EXECBLK",NIL)
DictPut(aColCtrls,"GETBLK",FIELDBLOCK("STATE"))
oColObj := TBColumnNew("State", ;
{||Cities->State})
oColObj:cargo := aColCtrls
oBrwObj:addColumn(oColObj)
// Put a Window on the Screen
@ nBr1,nBc1,nBr2,nBc2 WINDOW STYLE "3+"
// Add Some Other Display Items
nDisplayRow := oBrwObj:nBottom - oBrwObj:rowCount - 1
// Execute the Browse
DO WHILE .T.
SetMsgLin("_ Arrows/PgUp/PgDn-Move _ ENTER-Edit _
Alt+M-Menu _ Ctrl+ENTER-Next _ ESC-Exit _")
BrwMouse(nBr1,nBc1,nBr2,nBc2,oBrwObj)
IF !BrowseDb(oBrwObj,,4)
EXIT
ENDIF
cDbStatus := DbState()
BrwMouse() // Mouse
Pads Off
Rmnt145()
DbState( cDbStatus )
ENDDO
BrwMouse() // Mouse Pads
Off
Page: 108
SETCOLOR(cOldColor)
WINDOW REMOVE // Remove Window from Screen
VarPop()
VII. Pick List Boxes.
A typical BUILDER picklist procedure looks like the
following:
************************************************************
*******************
** CALLED BY: Hand Code: HAND102 Picklist No Options
Setup **
** Comment: No Options Picklist
**
************************************************************
*******************
PROCEDURE Plst027()
LOCAL nPr1,nPc1,nPr2,nPc2,cDisp
nPr1 := 11
nPc1 := 22
nPr2 := nPr1+09
nPc2 := nPc1+44
VarPush("PLST027")
SETCOLOR(Var(WNDW_CLR_))
cDisp := 'Transform(Zip,"@R 99999 99999")+" "+State+"
"+City'
Plist(nPr1,nPc1,nPr2,nPc2,"CITIES",1,cDisp,.F.,"","",{||Hand
032()})
*#SNAPCODE HAND032()
VarPop()
This one creates a window at row 11 column 22 to row 20
column 66. It scrolls the 'CITIES database displaying the
fields ZIP, STATE, and CITY. The fields will be displayed
organized according to index order one (1). The QWERTY
scroll is disabled. QWERTY field blank. Uses default
reverse color. The function 'HAND032' is called when the
ENTER key is pressed.
Picklists seem to be the area of BUILDER most people have
difficulty understanding. Picklists are difficult to learn,
but once mastered, very quick to setup. The BOUNDED BY and
QWERTY SCROLL features seem to cause the most problems.
Take your time and study how each parameter works, the call
Page: 109
to the picklist function may be only one line of code but
setup is very exacting.
The #SNAPCODE HAND039 is to tell SNAP! how to proceed in
documenting the program flow. If you do not know about the
SNAP! program GET A COPY. It is a Shareware program written
by an ASP member and will produce more system level
documentation than any MIS manager would ever dare ask for.
Highly recommended.
VIII. File Maintenance Boxes.
File maintenance procedures are included in the source code
only if at least one file maintenance box is defined to the
BUILDER prototype. These are arranged to call the generic
file maintenance procedure, see the documentation on the
GEN_MAINT() func for further details.
IX. Index Checking.
ChkNtxs()
The procedure CHK_NTXS is created to verify the existence of
all indexes (entered in Files/Edit Databases USEd), if an
index exists nothing happens, if it does not it is created.
This eliminates the need to put 'Index' or 'Reindex' menu
options on application menus. I have found the Clipper .NTX
structure so solid that periodic reindexing is not needed.
X. Database and Index File Opens.
Next in the source code is the procedure OpenFiles() which
opens all application database and index files.
XI. Help System.
If you incorporated a help system into your application the
procedure HELP will be the last in the source code file.
This procedure handles all F1-Help logic. See the chapter
on the Help System for more information. This is added to
Summer '87 style source code only, Clipper 5.x style source
is able to use a library function for the help system.
Page: 110
APPENDIX C - Files Created by BUILDER
OPTIONS.DBF
HELP.DBF HELP.DBT, HELP1.NTX
FILES.BLD FILES1.BLX, FILES2.BLX
WINDOWS.BLD WINDOWS1.BLX, WINDOWS2.BLX, WINDOWS3.BLX
WINDOWS4.BLX
ELEMENTS.BLD ELEMENT1.BLX, ELEMENT2.BLX, ELEMENT3.BLX
PICKLIST.BLD PICKLIST.BLX
VALIDS.BLD VALIDS1.BLX
HANDCODE.BLD HANDCODE.BLT, HANDCOD1.BLX
BDCTFIL.BLD BDCTFIL1.BLX
BDCTFLD.BLD BDCTFLD.BLT, BDCTFLD1.BLX, BDCTFLD2.BLX,
BDCTFLD3.BLX
BDCTVLD.BLD BDCTVLD1.BLX
The .BLD files are created by BUILDER.EXE in standard
Clipper .DBF format that you could USE in any xBASE system.
The .BLT files are Clipper compatible .DBT files. The .BLX
files are standard Clipper .NTX format files that you could
use in Clipper. The .BL? extension files are intended to be
used only by BUILDER and have no use to the finished
application.
A duplicate of each .BLD file will be created by BUILDER on
each entry into the BUILDER program. They will be copied to
the same filenames but with the extension .BKD. In the
event of a power failure or a similar computer tragedy, your
last BUILDER session is backed up. Note that OPTIONS.DBF,
HELP.DBF, and HELP.DBT are not backed up at all.
OPTIONS.DBF - This file is a one record database that
contains all the defaults needed by the application. After
this file is created you can add fields of your own if you
require additional default values for your application,
however, be sure you don't delete any fields as this may
render your application or BUILDER inoperative.
HELP.DBF/.DBT - Help file, created for *all* BUILDER
applications, even if a Help System is NOT to be incorpo
rated. See the section on the Help System for more detailed
information.
FILES.BLD - contains the list of databases and indexes your
application will use.
WINDOWS.BLD - each record defines by boundaries of a
window and where in the application the window belongs.
ELEMENTS.BLD - each record contains a display/GET element
used in a window.
Page: 111
PICKLIST.BLD - each record contains the detail needed to
create a picklist.
VALIDS.BLD - each record in this file contains the data
needed to create a VALID clause specified for a GET.
HANDCODE.BLD - each record contains one hand code
function's source statements.
BDCTFIL.BLD - each record contains a database definition
that is used in the BUILDER data dictionary.
BDCTFLD.BLD - each record contains a database field
definition that is used in the BUILDER data dictionary.
BDCTVLD.BLD - each record contains a valid definition
that is used in the BUILDER data dictionary.
The reason .BLD, .BLT, and .BLX are used for the BUILDER
files is to make it easier to copy the generated application
when it is finished. You need only copy the .DBFs and the
.EXE(s) to give the application to your user.