home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / builder / builder.doc < prev    next >
Text File  |  1994-10-26  |  240KB  |  4,865 lines

  1.                                              Page: 1
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.                             Aeolus Software
  12.                         BUILDER REFERENCE GUIDE
  13.  
  14.  
  15.  
  16.  
  17.                                COPYRIGHT
  18.                   c 1992, 1993, 1994 by Aeolus Software
  19.                           All rights reserved.
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.   Aeolus Software
  32.   P.O. Box 11915
  33.   St. Paul, MN  55111-0915
  34.   (612) 730-4135
  35.  
  36.     Mark H. Kania, CIS# 76270,2436                                              Page: 2
  37.   Contents
  38.  
  39. PREFACE: . . . . . . . . . . . . . . . . . .4
  40. INTRODUCTION:. . . . . . . . . . . . . . . .5
  41. INSTALLATION:. . . . . . . . . . . . . . . .6
  42. GETTING STARTED: . . . . . . . . . . . . . .8
  43. MAIN MENU. . . . . . . . . . . . . . . . . 15
  44. CHANGE WINDOW. . . . . . . . . . . . . . . 16
  45. ADD WINDOW . . . . . . . . . . . . . . . . 19
  46. ADD WINDOW - DIALOG BOX. . . . . . . . . . 22
  47. ADD WINDOW - FILE MAINTENANCE. . . . . . . 25
  48. ADD WINDOW - PICK LIST . . . . . . . . . . 28
  49. ADD WINDOW - COPY WINDOW . . . . . . . . . 32
  50.  ADD WINDOW - HAND CODE. . . . . . . . . . 34
  51. ADD WINDOW - TBROWSE . . . . . . . . . . . 36
  52. ADD WINDOW - REL MAINT . . . . . . . . . . 42
  53. OPTIONS. . . . . . . . . . . . . . . . . . 46
  54. FILES. . . . . . . . . . . . . . . . . . . 47
  55. FILES - EDIT DATABASES USED. . . . . . . . 48
  56. FILES - MODIFY/CREATE STRUCTURE. . . . . . 50
  57. FILES - DATA DICTIONARY. . . . . . . . . . 53
  58. FILES - DATA DICTIONARY - Edit Data Dictionary .55
  59. FILES - DATA DICTIONARY - Edit Data Dictionary - Additional Items     58
  60. MODE . . . . . . . . . . . . . . . . . . . 66
  61. ADDITIONAL ITEMS MENU. . . . . . . . . . . 67
  62. ADDITIONAL ITEMS MENU - VALID. . . . . . . 68
  63. ADDITIONAL ITEMS MENU - VALID - Pick List Validate . . . . . .70
  64. ADDITIONAL ITEMS MENU - VALID - Check Character(s) . . . . . .72
  65. ADDITIONAL ITEMS MENU - VALID - Field Required 74
  66. ADDITIONAL ITEMS MENU - VALID - Duplicate Check 75
  67. ADDITIONAL ITEMS MENU - VALID - In a File Validate . . . . . . 77
  68. ADDITIONAL ITEMS MENU - VALID - Generic Valid.  79
  69. ADDITIONAL ITEMS MENU - VALID - Right Justify Field. . . . . . 80
  70. ADDITIONAL ITEMS MENU - VALID - Comment Only .  81
  71. ADDITIONAL ITEMS MENU - IMPORT . . . . . . 82
  72. ADDITIONAL ITEMS MENU - EDIT HELP. . . . . 84
  73. ADDITIONAL ITEMS MENU - DELETE . . . . . . 85
  74. CROSSHAIRS . . . . . . . . . . . . . . . . 86
  75. F1 HELP SYSTEM . . . . . . . . . . . . . . 87
  76. F3 HELP SYSTEM . . . . . . . . . . . . . . 91
  77. DEFAULT OPTIONS AND HELP.. . . . . . . . . 92
  78. CONVERTING FROM BUILDER 1.0 OR 2.0 . . . . 94
  79. SUGGESTIONS. . . . . . . . . . . . . . . . 95
  80. APPENDIX A - How to Operate Generic File Maintenance Windows.    98
  81. APPENDIX B - The Generated Source Code . . 99
  82.                                       Page: 3
  83.  
  84. APPENDIX C - Files Created by BUILDER. . .110
  85.                                                 Page: 4
  86.   PREFACE:
  87.  
  88.   This manual is a guide for users of the Aeolus BUILDER and
  89.   the Aeolus Function Library.  The BUILDER is an easy to use
  90.   interactive program prototyper and Clipper source code
  91.   generator.  The Function Library is a set of Clipper source
  92.   code functions and procedures that automate much of the rote
  93.   work of Clipper programing.  It has been my experience that
  94.   a knowledgeable user of these tools can easily cut the work
  95.   involved in a project by at least of 80%.
  96.  
  97.   This product is designed for the experienced Clipper
  98.   programmer.  BUILDER creates incomplete source which
  99.   requires completion.  It is designed only to generate the
  100.   time-consuming rote programming tasks almost every project
  101.   has in abundance.  The user of this product must also be
  102.   competent at using the MS-DOS/PC-DOS operating system.
  103.  
  104.   Clipper programmers of all experience levels can use
  105.   BUILDER, BREPORT and the BUILDER Function Library.  Less
  106.   experienced programmers will find many useful examples of
  107.   modular coding technique in the source generated by
  108.   BUILDER. Experienced programmers will like these tools
  109.   because they free you from the time-consuming tasks that
  110.   take a large part of a your time and allow more concentra
  111.   tion on the shorter but more involved areas of a program.
  112.                                                 Page: 5
  113.   INTRODUCTION:
  114.  
  115.   The Aeolus BUILDER, BREPORT and the BUILDER Function
  116.   Library.  The BUILDER is an interactive program prototyper
  117.   and Clipper source code generator which allows you to create
  118.   a nearly complete text based windowing application which
  119.   includes a drop down menu system plus Dialog, Pick-list,
  120.   File Maintenance, TBrowse, and Relation Maintenance type
  121.   windows.  There is also the ability to place your own source
  122.   code  in BUILDER programs using Hand Code sections.  The
  123.   windows are placed on the screen in a logical cascading
  124.   fashion but may be sized or moved anywhere on the screen
  125.   easily.  All the display and input fields inside the window
  126.   can also be moved or changed.  The BUILDER includes the
  127.   ability to create  .DBF database structures and set the
  128.   screen colors for your application.  When the prototype is
  129.   complete, selecting the Generate Source Code menu option
  130.   will create Clipper source code that uses the Aeolus
  131.   Function Library which provides useful example code.
  132.   BREPORT is an easy to use Clipper source code generator for
  133.   creating Clipper report source code.  The Function Library
  134.   is a set of high level Clipper functions which were
  135.   developed over a period of several years by a consultant
  136.   based on the needs of real applications in the real world.
  137.   See the Function Library Reference Guide for detailed
  138.   information on how to use all the tools provided in the
  139.   Function Library.
  140.  
  141.   The Aeolus BUILDER, BREPORT and Function Library used by an
  142.   experienced user should easily cut a project by 75% to 85%
  143.   in some instances.  Using the prototyper a programmer, in a
  144.   matter of minutes, can show an end user the general look and
  145.   feel of the application she/he is creating.  This ability to
  146.   show a user what a program is like to operate before the
  147.   first line of code is written is valuable in mapping out
  148.   changes before any significant effort is expended, which
  149.   would otherwise make changes difficult.  When the design is
  150.   complete 80% to 99% of the source code is generated by
  151.   BUILDER, the programmer simply completes the system.  Often
  152.   only tying up loose ends.  Since the BUILDER creates most of
  153.   the source code there will be fewer bugs, since the user has
  154.   already "played" with the prototype they will want fewer
  155.   changes.  Everybody Wins!!
  156.                                                 Page: 6
  157.   INSTALLATION:
  158.  
  159.   System requirements:
  160.  
  161.   To install the Aeolus BUILDER on your computer you will need
  162.   an IBM compatible computer operating under MS-DOS or PC-DOS
  163.   version 3.3 or higher.
  164.  
  165.   You will also need a Clipper compiler, either Summer '87 or
  166.   Version 5.x.
  167.  
  168.   The BUILDER will require that your PC has 512K of RAM free
  169.   when it is run.
  170.  
  171.   It is only recommended you use BUILDER on computers with a
  172.   hard-disk.
  173.  
  174.   Copy and uncompress the files on the distribution disk into
  175.   an empty subdirectory.  (C:\BUILDER for example)
  176.  
  177.   If you are installing BUILDER to be used with Clipper
  178.   version 5.2, type
  179.    BINSTLC52 <directory-name>.
  180.  
  181.   If you are installing BUILDER to be used with Clipper
  182.   versions 5.01 through 5.1, type
  183.    BINSTLC50 <directory-name>.
  184.  
  185.   When installing BUILDER for use with any 5.x version of
  186.   Clipper, include the name of the subdirectory where the BIN,
  187.   OBJ, LIB, INCLUDE, SOURCE, and PLL Clipper subdirectories
  188.   are located.  Your command line for installing BUILDER for
  189.   use with Clipper version 5.2 would look something like:
  190.    BINSTL52 \CLIP52\
  191.  
  192.   Note:  The trailing backslash IS required!
  193.  
  194.   If you are still using the Summer '87 version of Clipper,
  195.   type
  196.    BINSTLS87 <directory-name>.
  197.  
  198.   For Installing Builder for Use With Clipper Summer '87...
  199.   Be sure to include the name of the subdirectory where the
  200.   file CLIPPER.EXE is located.  Put a trailing backslash on
  201.   the subdirectory name also!  Your install command would look
  202.   something like:
  203.    BINSTL87 \CLIPS87\
  204.  
  205.   General Note for Summer '87 Users: >>> On the command line
  206.   for your linker or in you .LNK file, be certain that
  207.   BUILDER.LIB is referenced BEFORE EXTEND.LIB.  If this is not
  208.   done the linker will report 'Undefined Symbols Exist'. for
  209.  
  210.                                            Page: 7
  211.  
  212.   example:
  213.  
  214.   Using PLINK86 as an example the following will work-
  215.  
  216.   SET LIB=\CLIPPER\
  217.   PLINK86 FI MYPROG LIB CLIPPER,BUILDER,BLDRASM,EXTEND
  218.  
  219.   It works because BUILDER comes before EXTEND and the
  220.   following will produce errors:
  221.  
  222.   SET LIB=\CLIPPER\
  223.   PLINK86 FI MYPROG LIB CLIPPER,EXTEND,BUILDER,BLDRASM
  224.  
  225.   WARNING TO ALL BUILDER USERS!!!
  226.   _______________
  227.   DO NOT UNDER ANY CIRCUMSTANCES PUT BLDRASM.LIB FUNCTIONS IN
  228.   AN OVERLAY!!!  YOUR SYSTEM WILL CRASH!!
  229.                                                 Page: 8
  230.   GETTING STARTED:
  231.  
  232.   General Notes:
  233.   At all times while operating the BUILDER program the bottom
  234.   line on the screen will contain the allowable keystrokes and
  235.   their function.  Remember to look at the bottom line of the
  236.   screen whenever you don't know what to do next!
  237.  
  238.   Upon initially executing the BUILDER program you will be
  239.   presented with this screen which sets the startup options
  240.   for the application you will create.  All the information
  241.   entered here is also available from the BUILDER main menu,
  242.   so no need to panic about mistakes.
  243.  
  244.  
  245. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  246. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  247. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  248. ░░░░░░░░░░░░░╔════════════════════════════════════════Page 1 of 4═╗░░░░░░░░░░░░░
  249. ░░░░░░░░░░░░░║ Enter Information About New Application            ║░░░░░░░░░░░░░
  250. ░░░░░░░░░░░░░║                                                    ║░░░░░░░░░░░░░
  251. ░░░░░░░░░░░░░║ Author  ████████████████████████████               ║░░░░░░░░░░░░░
  252. ░░░░░░░░░░░░░║ Company Name:                                      ║░░░░░░░░░░░░░
  253. ░░░░░░░░░░░░░║ ██████████████████████████████████████████████████ ║░░░░░░░░░░░░░
  254. ░░░░░░░░░░░░░║ Network (Y/N)  N                                   ║░░░░░░░░░░░░░
  255. ░░░░░░░░░░░░░║ Screen Heading (Y/N)  Y                            ║░░░░░░░░░░░░░
  256. ░░░░░░░░░░░░░║ Application Name: (if Screen Heading is YES)       ║░░░░░░░░░░░░░
  257. ░░░░░░░░░░░░░║ ██████████████████████████████████████████████████ ║░░░░░░░░░░░░░
  258. ░░░░░░░░░░░░░║ Exploding Windows? (Y/N)  N                        ║░░░░░░░░░░░░░
  259. ░░░░░░░░░░░░░║ Program Filename  ████████████████████             ║░░░░░░░░░░░░░
  260. ░░░░░░░░░░░░░║                                                    ║░░░░░░░░░░░░░
  261. ░░░░░░░░░░░░░╚════════════════════════════════════════════════════╝░░░░░░░░░░░░░
  262. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  263. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  264. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  265. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  266. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  267. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  268. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  269. ▓ Up/Down-Prv/Nxt Field ▓ PgUp/PgDn-Prv/Nxt Page ▓ Enter Changes ▓ ESC-Exit ▓
  270.  
  271.  
  272.   his is the OPTIONS screen.  All values entered here will be
  273.   available for changes on the "Options" main menu option.
  274.   There are four screen pages with many options.  All the
  275.   options from these screens are listed below.
  276.  
  277.   Author - Enter your name, the name will be used in the in
  278.   stream source code comments only.
  279.  
  280.   Company Name - Enter the company whose name should appear on
  281.   the copyright notice in the source code comments and on the
  282.   screen heading.
  283.  
  284.   Network (Y/N) - If you are creating a multi-user application
  285.   to be run on a local area network enter Y at the "Network
  286.   (Y/N)" field otherwise enter N.
  287.  
  288.   Options screen - page 1.
  289.   Screen Heading (Y/N) - If you want a screen heading that
  290.   displays the company name and the application name enter Y
  291.  
  292.                                            Page: 9
  293.  
  294.   here.  Enter N to turn this off.
  295.  
  296.   Application Name - Enter the application name that will
  297.   appear on the screen heading and in the source code comments
  298.   copyright notice.
  299.  
  300.   Exploding Windows? (Y/N) - Enter Y for all windows that
  301.   appear to start small and grow until their correct size.
  302.   Enter N for window to pop onto the screen.
  303.  
  304.   Program Filename - Enter the filename of the application to
  305.   create.  You may enter a filename extension if you like but
  306.   .PRG will not be accepted.  The default extension is .PR1.
  307.   You may specify an different drive/path also.
  308.  
  309.   Options screen - page 2
  310.   Incorporate Help System - Enter a Y here if you want your
  311.   application to have an F1 HELP system incorporated.  Press N
  312.   otherwise.  Note that even though you specify NO you do not
  313.   want a help system, you will still be able to key in help
  314.   screens.  See the section entitled "F1 Help System" in this
  315.   manual for more information.
  316.  
  317.   Maximum Help Text Lines -  Enter a number in the range 0-999
  318.   for the maximum lines of text allowed to be entered into a
  319.   single help screen.  A value of 0 (zero) will allow entry of
  320.   up to 64KB, or an out of memory error occurs!
  321.  
  322.   Printer Port -  This field has two uses.  One, to set the
  323.   printer port for the application you create and, two, any
  324.   printing BUILDER does will be sent to this port also. You
  325.   will want to remember this if you are having trouble
  326.   printing in BUILDER or your application.
  327.  
  328.   Generate Clipper ver 5.x source? (Y/N) - Enter Y and BUILDER
  329.   will generate source code compatible with Clipper versions
  330.   5.01 through 5.2.  Enter N for Summer '87 source output.
  331.  
  332.   If 5.x source, use mouse routines? (Y/N) - If you will be
  333.   generating Clipper 5.x source for your applications and you
  334.   want your application to be navigated using a mouse, enter
  335.   Y.  Enter N and mouse input will not be accepted.
  336.  
  337.   If 5.x source, Dialog Scoping? (L/P) - When you create
  338.   BUILDER Dialog boxes, often you will also need to use memory
  339.   variables.  Enter L to create LOCAL and P to create PRIVATE
  340.   Dialolg memory variables.  LOCAL variables are preferred,
  341.   but PRIVATEs are easier to work with.
  342.  
  343.   Tab Size for Source Code Indentation? - Enter a number
  344.   between zero and nine here.  This will be the number of
  345.   characters indented for each control structure in the
  346.  
  347.                                            Page: 10
  348.  
  349.   generated source code.  A value of zero will be treated as
  350.   three.
  351.  
  352.   Create *.BK? Builder Back Up Files? (Y/N) - When BUILDER is
  353.   started and this option is set to Y, all the BUILDER *.BL?
  354.   files will be copied to *.BK? for back up.  Enter N and the
  355.   files will not be backed up.
  356.  
  357.   CONFIRM Setting? (Y=ON/N=OFF) - Enter a Y and the Clipper
  358.   command
  359.    SET CONFIRM ON
  360.    will be placed in your source code.  Enter N and the
  361.   command entered will be
  362.    SET CONFIRM OFF
  363.  
  364.   Options screen - page 3
  365.   Date Format? (A,N,B,F,G,I,J,U) - Enter a value from the
  366.   following table to set the date format in your application.
  367.   BUILDER will enter a SET DATE TO ... command according to
  368.   your response.
  369.  
  370.   Field Entry     Date Format
  371.   ------------    --------------
  372.           A       AMERICAN
  373.           N       ANSI
  374.           B       BRITISH
  375.           F       FRENCH
  376.           G       GERMAN
  377.           I       ITALIAN
  378.           J       JAPAN
  379.           U       USA
  380.  
  381.   CENTURY Setting? (Y=ON/N=OFF) - Enter a Y for BUILDER to
  382.   enter a
  383.    SET CENTURY ON
  384.   in your application initialization.  Enter N and
  385.    SET CENTURY OFF
  386.   will be entered.
  387.  
  388.   EPOCH Setting (Year)? - The default value will be the
  389.   current year minus 30 years.  This should work for almost
  390.   all applications.  The Clipper command
  391.    SET EPOCH  TO <year>
  392.   will be entered with <year> set to the value entered here.
  393.  
  394.   Error System? [C]clipper or [B]uilder - Enter C for the
  395.   standard Clipper error message followed by a traceback.
  396.   Enter B and the BUILDER error system will be used.  The
  397.   BUILDER error system can be set to send output to a file or
  398.   to the screen.  The error message box that appears can be
  399.   removed using the mouse, the Clipper box cannot.  Note that
  400.   this has no effect on Summer '87 code.
  401.  
  402.                                            Page: 11
  403.  
  404.   If Using the Builder Errorsys, Output to: [S]creen or [F]ile
  405.   - Enter S and the error system will function similar to the
  406.   Clipper error system, with a message followed by a
  407.   traceback.  Enter F and the error message box will be
  408.   followed by another message box that reads the error
  409.   information was placed in the file BLDRERR.DBF.  BLDRERR.DBF
  410.   fields will be populated with the error date and time, a
  411.   screen image, and the traceback information.
  412.  
  413.   Your Linker Name? - BUILDER uses this information to create
  414.   a make (.rmk) file.  Make files are only created when one
  415.   does not exist - BUILDER will not overwrite a make file.
  416.  
  417.   Options screen - page 4
  418.   Window Style for Non-Menu Windows (==, --, =-, -=, 3+, 3-,
  419.   or blank) - Enter the window style you prefer for your non-
  420.   menu applicatoin windows.  Enter == for a double border, --
  421.   for single, =- for double horizontal and single vertical, -=
  422.   for single horizontal and double vertical, 3+ for 3D
  423.   'outtie', 3- for 3D 'innie'.  Enter any other characters and
  424.   the first character will be the horizontal border character,
  425.   the second the vertical.
  426.  
  427.   Window Style for Menu Windows (==, --, =-, -=, 3+, 3-, or
  428.   blank) - Enter the window style for menu windows here.  The
  429.   styles available are the same as for non-menu windows.  See
  430.   the preceeding paragraph for allowable values.
  431.  
  432.   Menu Style? (B, P, or W) - Enter B for a bar drop down menu
  433.   system where the root menu items are located on a horizontal
  434.   bar with sub-menus that drop down.  Enter P for a pop-up
  435.   menu system where all system menus are vertical, and the
  436.   root menu is placed in the center of the screen.  Enter W
  437.   for a window drop down menu system where the root menu is a
  438.   horizontal menu contained in a window the width of the
  439.   screen with sub-menus that drop down.
  440.  
  441.   Put Shadows on Menu Windows? (Y/N) - Enter Y for menu
  442.   windows to be displayed with shadows.  Enter N for menu
  443.   shadows to not be displayed.
  444.  
  445.   Builder Screens Color - Enter a valid Clipper color string
  446.   here for the color setting of the Builder menus and screens.
  447.  
  448.   After the initial startup options are entered BUILDER will
  449.   place you in a window in which to create the root menu of
  450.   your application.  Although you may move around the BUILDER
  451.   menus and do other tasks at this time, BUILDER will force
  452.   you to add a root menu.
  453.  
  454.  
  455.  
  456.  
  457.                                            Page: 12
  458.  
  459.  
  460.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  461. ║              ╔════════════╗    Aeolus Software                               ║
  462. ║              ║█Menu███████║t Builder 2.2 Application                         ║
  463. ╚══════════════║ Pick List  ║══════════════════════════════════════════════════╝
  464. ░░░░░░░░░░░░░░░║ Dialog     ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  465. ░░░░░░░░░░░░░░░║ File ╔═══════════════════════════════════════════╗░░░░░░░░░░░░░
  466. ░░░░░░░░░░░░░░░║ Copy ║   Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
  467. ░░░░░░░░░░░░░░░╚══════║ Edi╔═ ADD/CHG MENU ═══════╡Record: 1 of 0╞════╗░░░░░░░░░
  468. ░░░░░░░░░░░░░░░░░░░░░░╚════║ MENU LABEL:                              ║░░░░░░░░░
  469. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░
  470. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░
  471. ░░░░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░
  472. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  473. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  474. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  475. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  476. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  477. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  478. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  479. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  480. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  481. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  482. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  483. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  484. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  485.  
  486.  
  487.   To do this enter a menu label.  Press the PgDn key to save
  488.   each label, when finished press the ESC key until the
  489.   BUILDER menu (bar menu on the top line of the screen)
  490.   disappears.  You will then see the prototype of your newly
  491.   created root menu.
  492.  
  493.   Note to the curious:
  494.   While entering menu labels you may notice that the ADD/CHG
  495.   MENU window top border reads Record 1 of 0, and conclude
  496.   that this is confusing and illogical.  In all the BUILDER
  497.   file maintenance routines when the first number is one
  498.   greater that the second that means you are in ADD mode and
  499.   that you are working on a record that currently does not
  500.   exist.
  501.  
  502.   After entering your root menu labels and ESCaping to the
  503.   prototype your screen should look something like following
  504.   [Post Initialization] screen .
  505.                                                 Page: 13
  506.  
  507.  
  508. ╔══════════════════════════════════════════════════════════════════════════════╗
  509. ║                                Aeolus Software                               ║
  510. ║                         Test Builder 2.2 Application                         ║
  511. ╔══════════════════════════════════════════════════════════════════════════════╗
  512. ║        █Maintenance█                Process                 Reports          ║
  513. ╚══════════════════════════════════════════════════════════════════════════════╝
  514. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  515. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  516. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  517. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  518. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  519. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  520. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  521. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  522. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  523. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  524. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  525. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  526. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  527. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  528. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  529. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  530. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  531. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  532. ▓ Arrows-Move Pointer ▓ ENTER-Next or Add Window ▓ F1-Builder Menu ▓ ESC-Exit ▓
  533.  
  534.  
  535.   When you exit to DOS and re-enter the BUILDER you will be
  536.   presented with the root menu of your application prototype
  537.   thus bypassing the startup options you have already entered.
  538.  
  539.   Notice three things at this point.  One, you are now
  540.   operating a prototype of the application being created and
  541.   the menus function very similar to the actual application.
  542.   Two, you can get back to the BUILDER menu by pressing the F1
  543.   key (see the bottom line of the screen).  Three, if you want
  544.   to add a submenu or sub-window press ENTER on a menu option
  545.   where you want a window added, the BUILDER Add Window menu
  546.   is automatically presented, if you are in Prototype mode a
  547.   message box will be displayed indicating the desired menu
  548.   option is not installed.
  549.  
  550.   Let's say that you now want to add a submenu or sub-window
  551.   to the 'Maintenance' menu option on the example application.
  552.   Pressing ENTER with the menu bar positioned on the
  553.   'Maintenance' label will bring up the BUILDER Add submenu,
  554.   as in the following screen.
  555.  
  556.   Pressing ENTER on any of your menu options or windows will
  557.   bring up the next window of your logic chain.  If you are at
  558.   the at the end of the logic chain, the BUILDER "Add Window"
  559.   menu is presented.  This is how you build your application
  560.   prototype, by simply pressing ENTER on one of your menu
  561.   options or a prototype window with nothing following and
  562.   adding new windows to the chain.
  563.  
  564.  
  565.                                            Page: 14
  566.  
  567.   That is the basics of prototype operation.  Each BUILDER
  568.   option will now be explored in detail.
  569.                                                 Page: 15
  570.   MAIN MENU
  571.  
  572.   To make changes to your application prototype, access the
  573.   BUILDER main menu by pressing the F1 key.  A menu bar will
  574.   be placed on the top of the screen overlapping the prototype
  575.   screen.  See the following screen sample.
  576.  
  577.  
  578.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  579. ║                                Aeolus Software                               ║
  580. ║                         Test Builder 2.2 Application                         ║
  581. ╔══════════════════════════════════════════════════════════════════════════════╗
  582. ║        █Maintenance█                Process                 Reports          ║
  583. ╚══════════════════════════════════════════════════════════════════════════════╝
  584. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  585. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  586. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  587. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  588. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  589. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  590. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  591. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  592. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  593. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  594. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  595. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  596. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  597. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  598. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  599. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  600. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  601. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  602. ▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit to Prototype ▓
  603.  
  604.  
  605.   Move the cursor using the left and right arrow keys and
  606.   press ENTER to select an option or press ESC from the
  607.   BUILDER main menu to return to your prototype.
  608.  
  609.   Select from these options:
  610.  
  611.   Change Window   - move/size windows, move/change text in
  612.   windows
  613.   Add Window - put a new Menu/Dialog/Picklist/File
  614.   Maintenance window, or Hand Code on the BUILDER prototype
  615.   Files      - modify the database list for program,
  616.   modify database structures, data dictionary, or generate
  617.   source code
  618.   Options         - modify screen heading/network/program name
  619.   options
  620.   Colors          - modify the screen colors for the program
  621.   you are creating
  622.   Mode       - select between "Development" and "Prototype"
  623.   BUILDER operating modes
  624.   About      - A display only window showing the program
  625.   name, version number, author and company name.
  626.   Exit       - Exit to DOS
  627.                                                 Page: 16
  628.  
  629.   CHANGE WINDOW
  630.  
  631.   Selecting the Change Window main menu option will bring down
  632.   a submenu of four choices.  As in the following screen
  633.   sample.
  634.  
  635.  
  636.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  637. ╔═══════════════╗                Aeolus Software                               ║
  638. ║█Move Window███║         Test Builder 2.2 Application                         ║
  639. ║ Size Window   ║══════════════════════════════════════════════════════════════╗
  640. ║ Move Elements ║ance█                Process                 Reports          ║
  641. ║ Edit Elements ║══════════════════════════════════════════════════════════════╝
  642. ╚═══════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  643. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  644. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  645. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  646. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  647. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  648. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  649. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  650. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  651. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  652. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  653. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  654. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  655. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  656. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  657. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  658. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  659. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  660. ▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit ▓
  661.  
  662.  
  663.   Changes will be made to the topmost or current window
  664.   selected in the application prototype.
  665.  
  666.   Move Window:
  667.  
  668.   Selecting the "Move Window" menu option will cause the
  669.   BUILDER menus to disappear and display only the prototype.
  670.   The arrow keys will be enabled and pressing any of the four
  671.   arrow directions will move selected window  in that
  672.   direction.  When the window is positioned where you want it
  673.   press ESC or ENTER and the Change Window submenu will
  674.   reappear.
  675.  
  676.   You may also use Home and End to move the window to the
  677.   leftmost and rightmost screen positions.  TAB and Shift+TAB
  678.   will move the window right or left 4 character positions at
  679.   a time.
  680.  
  681.   Size Window:
  682.  
  683.   The Size Window option will cause the BUILDER menus to
  684.   disappear also, however, now the arrow keys will change the
  685.   size of the selected prototype window. Again press ESC or
  686.   ENTER to return to the Change Window submenu.
  687.  
  688.   You may also use TAB and Shift+TAB to size the right border
  689.                                            Page: 17
  690.  
  691.   4 character positions at a time.  Pressing Ctrl+right arrow
  692.   will move the right border to its rightmost screen position,
  693.   Ctrl+PgDn will move the bottom border to the bottommost
  694.   position on the screen.
  695.  
  696.   Move Elements:
  697.  
  698.   The "Move Elements" option will cause the BUILDER menus to
  699.   disappear and highlight a window element.  On menus this
  700.   will be a menu label, on dialog windows or file maintenance
  701.   windows it will begin with a display element, TBrowse,
  702.   Picklist and Hand Code windows have no movable elements and
  703.   will display an error message.  Press the arrow keys to move
  704.   the element to the desired location within the window, the
  705.   BUILDER will prohibit you from moving it outside the window
  706.   boundaries.    Press the PgUp and PgDn key to highlight the
  707.   previous and next window element.  If you are moving a
  708.   display element of a dialog or file maintenance window,
  709.   pressing the TAB key will highlight the 'GET' element
  710.   associated with that display element and allow you to move
  711.   it, pressing TAB again selects the display element again.
  712.   The Home/End keys will move the currently selected element
  713.   to the leftmost/rightmost screen positions. Pressing the
  714.   Ctrl+PgDn key combination will move all window elements at
  715.   the current location and below to be moved down one line,
  716.   Ctrl+PgUp will move the elements at or below the current
  717.   location up one line.  Moving a GET field so that it 'hangs
  718.   off' the right window border will create scrolling fields in
  719.   the generated source, a PICTURE "@Snn ... will be created
  720.   for these fields.
  721.  
  722.   A message will be displayed on the bottom edge of the window
  723.   indicating the row and column position of display element
  724.   and the row, column, and size of GET element.  The row and
  725.   column coordinates will be relative to the top and left
  726.   window borders, therefore the display reads WROW-nnn WCOL-
  727.   nnn.
  728.  
  729.   Edit Elements:
  730.  
  731.   The Edit Elements option allows you to add, change, or
  732.   delete window elements.  When selected an edit window
  733.   exactly like the one used to Add the window will be
  734.   presented which will allow you to change or delete any
  735.   existing window element or add new elements.  Deleting all
  736.   the elements in a window will delete the window.
  737.  
  738.   If you delete a window that has sub-window(s) attached to
  739.   it, you will create a 'hole' in your application chain.  You
  740.   can add another window to fill this hole.  If you want to
  741.   delete an entire string of windows, either start from the
  742.   bottom window and work up, or delete in the source code
  743.  
  744.                                            Page: 18
  745.  
  746.   after it has been generated.
  747.  
  748.   Note that if you delete an entire menu window, you may have
  749.   many 'branches' following the 'hole' in your application
  750.   prototype.  These 'orphaned' windows will still be created
  751.   when the source code is generated.
  752.                                                 Page: 19
  753.   ADD WINDOW
  754.  
  755.   There are two ways to add new windows, a window can either
  756.   be appended (normal) or inserted.  BUILDER will ask you if
  757.   you want to insert when an insert condition occurs.
  758.  
  759.   If you accessed the BUILDER main menu by pressing the F1 key
  760.   and then selected the Add Window option on a window other
  761.   than the root menu you will be presented with a prompt
  762.   asking if you want to insert a window.  If you answer Yes to
  763.   the prompt the Add Window submenu will be presented.  Adding
  764.   a window will insert it between the last selected window and
  765.   the window previous to it (Behind the current window).
  766.  
  767.   This message is displayed when the "Add Window" menu
  768.   selection is made manually from the BUILDER main menu.
  769.  
  770.  
  771.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  772. ║        ╔════════════════════════╗olus Software                               ║
  773. ║        ║                        ║der 2.2 Application                         ║
  774. ╔════════║  Cannot Append Window  ║════════════════════════════════════════════╗
  775. ║        ║  Insert Window? (Y/N)  ║   Process                 Reports          ║
  776. ╚════════║                        ║════════════════════════════════════════════╝
  777. ░░░░░░░░░╚════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  778. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  779. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  780. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  781. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  782. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  783. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  784. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  785. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  786. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  787. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  788. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  789. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  790. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  791. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  792. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  793. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  794. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  795. ▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit to Prototype ▓
  796.  
  797.  
  798.                                                 Page: 20
  799.   ADD WINDOW - MENU
  800.   Select the "Menu" options from the "Add Window" sub-menu to
  801.   add a new menu to your application prototype.  As in this
  802.   screen.
  803.  
  804.  
  805.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  806. ║              ╔════════════╗    Aeolus Software                               ║
  807. ║              ║█Menu███████║t Builder 2.2 Application                         ║
  808. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  809. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  810. ╚══════════════║ TBrow╔═══════════════════════════════════════════╗════════════╝
  811. ░░░░░░░░░░░░░░░║ File ║   Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
  812. ░░░░░░░░░░░░░░░║ Rel M║ Edit Help: N                              ║░░░░░░░░░░░░░
  813. ░░░░░░░░░░░░░░░║ Hand ╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
  814. ░░░░░░░░░░░░░░░║ Copy Wndw  ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  815. ░░░░░░░░░░░░░░░╚════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  816. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  817. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  818. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  819. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  820. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  821. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  822. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  823. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  824. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  825. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  826. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  827. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  828. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  829. ▓ Enter Procedure Comment ▓ ESC-Exit ▓
  830.  
  831.  
  832.   Comment - Enter a comment in this field.  The comment should
  833.   be descriptive of the menus function.  Although optional,
  834.   window comments will prove extremely useful after you
  835.   generate the source.
  836.  
  837.   Edit Help - This field should be left alone when adding a
  838.   menu, this is used during "Change Window" and will allow the
  839.   creation of a help screen for the menu.
  840.  
  841.   When the following screen is presented, enter each menu
  842.   label.  Press the PgDn key after each menu label is entered
  843.   to save.  Press PgUp/PgDn to view the previous/next menu
  844.   labels for the current menu.  Press ESC when finished and
  845.   the new menu will be created and displayed.
  846.                                                 Page: 21
  847.  
  848.  
  849.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  850. ║              ╔════════════╗    Aeolus Software                               ║
  851. ║              ║█Menu███████║t Builder 2.2 Application                         ║
  852. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  853. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  854. ╚══════════════║ TBrow╔═══════════════════════════════════════════╗════════════╝
  855. ░░░░░░░░░░░░░░░║ File ║   Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
  856. ░░░░░░░░░░░░░░░║ Rel M║ Edi╔═ ADD/CHG MENU ═══════╡Record: 1 of 0╞════╗░░░░░░░░░
  857. ░░░░░░░░░░░░░░░║ Hand ╚════║ MENU LABEL:                              ║░░░░░░░░░
  858. ░░░░░░░░░░░░░░░║ Copy Wndw ║ ████████████████████████████████████████ ║░░░░░░░░░
  859. ░░░░░░░░░░░░░░░╚═══════════║                                          ║░░░░░░░░░
  860. ░░░░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░
  861. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  862. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  863. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  864. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  865. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  866. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  867. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  868. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  869. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  870. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  871. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  872. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  873. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  874.  
  875.  
  876.   You can add a horizontal bar across the window border of a
  877.   menu if the menu pads are aligned vertically.  To add these
  878.   menu separators change the window size and move the menu
  879.   elements so that there is a blank line between two menu
  880.   options.  Builder will detect this and automatically add a
  881.   separator bar to your menu when the menu is redisplayed.
  882.                                                 Page: 22
  883.   ADD WINDOW - DIALOG BOX
  884.  
  885.   Selecting a dialog box as the next window to add will
  886.   present the dialog initialization window.  The following
  887.   screen sample shows this.
  888.  
  889.  
  890.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  891. ║              ╔════════════╗    Aeolus Software                               ║
  892. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  893. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  894. ║        █Maint║█Dialog█████║         Process                 Reports          ║
  895. ╚══════════════║ TB╔══════════════════════════════════════════════╗════════════╝
  896. ░░░░░░░░░░░░░░░║ Fi║      Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
  897. ░░░░░░░░░░░░░░░║ Re║ Message Line: ██████████████████████████████ ║░░░░░░░░░░░░░
  898. ░░░░░░░░░░░░░░░║ Ha║    Edit Help: N                              ║░░░░░░░░░░░░░
  899. ░░░░░░░░░░░░░░░║ Co╚══════════════════════════════════════════════╝░░░░░░░░░░░░░
  900. ░░░░░░░░░░░░░░░╚════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  901. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  902. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  903. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  904. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  905. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  906. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  907. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  908. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  909. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  910. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  911. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  912. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  913. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  914. ▓ Enter Procedure Comment ▓ ESC-Exit ▓
  915.  
  916.  
  917.   Comment - Be sure to enter a window comment on all BUILDER
  918.   windows, these will make it easier for when you need to edit
  919.   the source code.
  920.  
  921.   Message Line - Enter the text you want your users to see on
  922.   the bottom screen line when this window is on the screen in
  923.   this field. BUILDER will prefix your entry with "_", and
  924.   suffix it with "_ ESC-Exit _" when the source code is
  925.   generated.
  926.  
  927.   Edit Help - Every BUILDERed application has a HELP file,
  928.   entering Y in the "Edit Help" field allows editing of this
  929.   data.  Note, however, you cannot "Edit Help" from the "Add
  930.   Window" BUILDER main menu option.
  931.  
  932.   After the initialization window is filled out, the element
  933.     entry window is presented.                                            Page: 23
  934.  
  935.  
  936.  
  937.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  938. ║              ╔════════════╗    Aeolus Software                               ║
  939. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  940. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  941. ║        █Maint║█Dialog█████║         Process                 Reports          ║
  942. ╚══════════════║ TB╔══════════════════════════════════════════════╗════════════╝
  943. ░░░░░░░░░░░░░░░║ Fi║      Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
  944. ░░░░░░░░░░░░░░░║ Re║ Mes╔═ DIALOG ═════════════╡Record: 1 of 0╞════╗░░░░░░░░░░░░
  945. ░░░░░░░░░░░░░░░║ Ha║    ║ Display Text:                            ║░░░░░░░░░░░░
  946. ░░░░░░░░░░░░░░░║ Co╚════║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  947. ░░░░░░░░░░░░░░░╚════════║ Enhanced Color?: N (Y/N)                 ║░░░░░░░░░░░░
  948. ░░░░░░░░░░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░
  949. ░░░░░░░░░░░░░░░░░░░░░░░░║ GET var: ██████████  Length: ██0         ║░░░░░░░░░░░░
  950. ░░░░░░░░░░░░░░░░░░░░░░░░║ Picture:                                 ║░░░░░░░░░░░░
  951. ░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  952. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize?: N (Y/N)                     ║░░░░░░░░░░░░
  953. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize to:                           ║░░░░░░░░░░░░
  954. ░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  955. ░░░░░░░░░░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░
  956. ░░░░░░░░░░░░░░░░░░░░░░░░╚═╡F10-Addtional Items╞════════════════════╝░░░░░░░░░░░░
  957. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  958. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  959. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  960. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  961. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  962.  
  963.  
  964.   None of the entries in this window are required, however,
  965.   one of either "Display Text" or "GET var" must be entered.
  966.  
  967.   Display Text - This field is optional, however, if left
  968.   blank will caus the "GET var" field to be required.  Enter
  969.   text to be displayed in the dialog box here.
  970.  
  971.   Enhanced Color? (Y/N) - If Y will display the "Display Text"
  972.   field in the "Window Message" color instead of "Window
  973.   Normal" - see the section on "Colors" for more information
  974.   about these color settings.
  975.  
  976.   GET var -  Enter a variable name for GET type keyboard
  977.   entry.  This field is requried unless the "Display Text"
  978.   field is non-blank.  Note that the only reliable way to GET
  979.   database field variables is to use the "Import" option from
  980.   the "Additional Items" menu!  Simply entering a field
  981.   variable will not work.  If you enter a value in this field
  982.   by hand, a memory variable will be created.
  983.  
  984.   Length - Enter the byte length of the GET variable, if
  985.   entered, in the "Length" field.
  986.  
  987.   Picture - If you want a PICTURE clause added to your GET,
  988.   enter a valid Clipper PICTURE (either with or without
  989.   quotes) in the "Picture" field.
  990.  
  991.   Enter "@MEMO" here if the "GET var" is a memo data type (no
  992.   quotes all caps).
  993.  
  994.   Enter '@MENU:{"prompt1","prompt2",...,"promptn"}' to create
  995.   a 'Menu' GET (leaving out the two single quotes).  All menu
  996.                                            Page: 24
  997.  
  998.   GETs will be positioned across the screen (horizontal), the
  999.   length will be computed and the field presented on the
  1000.   BUILDER screen with the correct size.  The "GET var" for a
  1001.   'Menu' GET must be a character or numeric data type ONLY.
  1002.   The menu code will read the data type and return the menu
  1003.   selection based on the data type.
  1004.  
  1005.   Enter '@DROPDOWN:{"Entry1","Entry2",...,"Entryn"}' here to
  1006.   create a dropdown list box GET (leaving out the two single
  1007.   quotes).  The length of the display will be determined as
  1008.   the length of the longest array element.  The GET variable
  1009.   MUST be a numeric data type!  The value placed in the "Get
  1010.   var:" will be the array element number selected.  When the
  1011.   drop down listbox has GET focus the up/down arrow keys will
  1012.   not move to the previous/next get but instead will move
  1013.   through the array selections.  Use the TAB/Shift+TAB to move
  1014.   between fields.  Also the Alt+DownArrow key or clicking on
  1015.   the arrow button will display the drop down listbox.
  1016.  
  1017.   WARNING:  Summer '87 Users WILL NOT be able to use the
  1018.   Builder @MENU!!
  1019.  
  1020.   Initialize? - If you want the GET variable initialized
  1021.   before the READ is executed enter a Y here.
  1022.  
  1023.   Initialize to - Enter the value with which to initialize the
  1024.   GET var.  In this  field you may enter a literal value or a
  1025.   function, like "MIKE JENSEN" or SPACE(25) for example.
  1026.  
  1027.   See the section entitled 'Dialog Box/File Maintenance
  1028.   Additional Items' for information about entering Valids,
  1029.   Editing Help Text, Importing screen items from a database,
  1030.   and Deleting an entire window.
  1031.                                                 Page: 25
  1032.   ADD WINDOW - FILE MAINTENANCE
  1033.  
  1034.   Selecting Add File Maintenance window will first present the
  1035.   file-maintenance initialization window which asks what
  1036.   database file is to be maintained and other pertinent
  1037.   information.  It is usually best to create your databases
  1038.   before creating File Maintenance windows. (see the section
  1039.   under Files/Creating-Modifying Databases).
  1040.  
  1041.  
  1042.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1043. ║              ╔════════════╗    Aeolus Software                               ║
  1044. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  1045. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  1046. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  1047. ╚══════════════║ ╔══════════════════════════════════════════════╗══════════════╝
  1048. ░░░░░░░░░░░░░░░║█║  Select File: █████████ Index Order: █0      ║░░░░░░░░░░░░░░░
  1049. ░░░░░░░░░░░░░░░║ ║ Menu Options: ACDF                           ║░░░░░░░░░░░░░░░
  1050. ░░░░░░░░░░░░░░░║ ║      Comment: ██████████████████████████████ ║░░░░░░░░░░░░░░░
  1051. ░░░░░░░░░░░░░░░║ ║                                              ║░░░░░░░░░░░░░░░
  1052. ░░░░░░░░░░░░░░░╚═╚══════════════════════════════════════════════╝░░░░░░░░░░░░░░░
  1053. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1054. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1055. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1056. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1057. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1058. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1059. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1060. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1061. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1062. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1063. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1064. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1065. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1066. ▓ Enter Alias to Select for File Maintenance and the Proc Comment ▓ ESC-Exit ▓
  1067.  
  1068.  
  1069.   Select File - Enter a database alias here.  Press enter with
  1070.   this field empty to be presented a picklist of .DBF files in
  1071.   the current DOS directory.
  1072.  
  1073.   Index Order - If the "Select File" can be located in the
  1074.   files list for your application, the message "F10 - Index
  1075.   List" will be displayed on the bottom window border.  Enter
  1076.   the index order number to be used when the file maintenance
  1077.   is executed.  Press F10 to select an index order from a
  1078.   picklist if the message is displayed.
  1079.  
  1080.   Menu Options - Enter "ACDF" to include all file maintenance
  1081.   menu options.  These stand for "A" - Add, "C" - Change, "D"
  1082.   - Delete, "F" - Find.  Remove any to customize user access
  1083.   to the data.  Leaving this field blank will place only the
  1084.   "Find" menu option on the file maintenance.  Note that these
  1085.   selections are made in the generated source code only and
  1086.   will not be visible on the BUILDER prototype screens.
  1087.  
  1088.  
  1089.   Comment - Always be sure to enter the window Comment as this
  1090.   will make your source code much more readable!
  1091.  
  1092.   Entering elements for a file maintenance window:
  1093.  
  1094.                                            Page: 26
  1095.  
  1096.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1097. ║              ╔════════════╗    Aeolus Software                               ║
  1098. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  1099. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  1100. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  1101. ╚══════════════║ ╔═════════════════════════════════════════════╗═══════════════╝
  1102. ░░░░░░░░░░░░░░░║█║ Select File: TEST████   Index Order:  1     ║░░░░░░░░░░░░░░░░
  1103. ░░░░░░░░░░░░░░░║ ║ ╔═ FILE MAINT ══════════╡Record: 1 of 0╞════╗░░░░░░░░░░░░░░░░
  1104. ░░░░░░░░░░░░░░░║ ║ ║ Display Text:                             ║░░░░░░░░░░░░░░░░
  1105. ░░░░░░░░░░░░░░░║ ║ ║ █████████████████████████████████████████ ║░░░░░░░░░░░░░░░░
  1106. ░░░░░░░░░░░░░░░╚═╚═║ Picture:                                  ║░░░░░░░░░░░░░░░░
  1107. ░░░░░░░░░░░░░░░░░░░║ █████████████████████████████████████████ ║░░░░░░░░░░░░░░░░
  1108. ░░░░░░░░░░░░░░░░░░░║     Key Field:  N   (Y/N)                 ║░░░░░░░░░░░░░░░░
  1109. ░░░░░░░░░░░░░░░░░░░║                                           ║░░░░░░░░░░░░░░░░
  1110. ░░░░░░░░░░░░░░░░░░░║    Field Name:  ████████                  ║░░░░░░░░░░░░░░░░
  1111. ░░░░░░░░░░░░░░░░░░░║    Field Type:  █   (C,N,D,M)             ║░░░░░░░░░░░░░░░░
  1112. ░░░░░░░░░░░░░░░░░░░║  Field Length:  ██0 (1-255)               ║░░░░░░░░░░░░░░░░
  1113. ░░░░░░░░░░░░░░░░░░░║ Field Decimal:  ██0                       ║░░░░░░░░░░░░░░░░
  1114. ░░░░░░░░░░░░░░░░░░░║                                           ║░░░░░░░░░░░░░░░░
  1115. ░░░░░░░░░░░░░░░░░░░║   Format Code:  █ [M]emo [P]hn [S]sn [Z]ip║░░░░░░░░░░░░░░░░
  1116. ░░░░░░░░░░░░░░░░░░░║                                           ║░░░░░░░░░░░░░░░░
  1117. ░░░░░░░░░░░░░░░░░░░╚═╡F10-Additional Items╞════════════════════╝░░░░░░░░░░░░░░░░
  1118. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1119. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1120. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  1121.  
  1122.  
  1123.   The bottom border of the window has a message that reads
  1124.   "F10-Additional Items". If you press F10 and select "Import"
  1125.   from the menu displayed, you will be able to add Display/GET
  1126.   data to your window directly from either a .DBF database
  1127.   file (one reason why it is better to create your databases
  1128.   first) or the Builder data dictionary.  See the "Additional
  1129.   Items" chapter in this manual for detailed information on
  1130.   the "Additional Items" menu.
  1131.  
  1132.   Display Text - Enter any display text associated with the
  1133.   field in the Display Text field; you can use any text upper
  1134.   or lower case.  You may leave the display text blank if you
  1135.   like, but either "Display Text" or a GET field must be
  1136.   entered.
  1137.  
  1138.   Picture - If the field requires a PICTURE enter a valid
  1139.   Clipper PICTURE here.
  1140.   If the "Field Type" is Memo, either enter "@MEMO" here (no
  1141.   quotes) OR enter and "M" in the "Format Code" field.
  1142.   To create a 'Menu' type GET, Enter
  1143.   @MENU:{"prompt1","prompt2",...,"promptn"}' (without
  1144.   surrounding single quotes).  The "Field Type" must be either
  1145.   character or numeric to use the "@MENU".
  1146.  
  1147.   You may also create a drop down listbox GET by entering
  1148.   '@DROPDOWN:{"Entry1","Entry2",...,"Entryn"}' (without the
  1149.   single quotes).  The "Field Type" MUST be numeric to use
  1150.   this option!  The value placed into the field will be the
  1151.   array element number of the item selected.  When the GET
  1152.   focus is on a Builder drop down listbox, the up/down arrows
  1153.   will not move the GET focus, use TAB and Shift+TAB instead.
  1154.   Also the Alt+DownArrow key or clicking on the down button
  1155.   will show drop down the list.
  1156.  
  1157.  
  1158.                                            Page: 27
  1159.  
  1160.   Note: @MENU and @DROPDOWN are NOT available to Summer '87
  1161.   Users!!
  1162.  
  1163.   Key Field - All fields identified with the "Key Field" entry
  1164.   equal to "Y" will be positioned as the first fields in the
  1165.   File Maintenance window and no duplicates (assuming the
  1166.   fields match by the index) will be allowed.  If there are no
  1167.   "Key Field" entries equal to "Y", the "File Maintenance"
  1168.   window source code will be generated to allow duplicates.
  1169.  
  1170.   The Field Name, Type, Length and Decimal are used to
  1171.   determine the name of the GET field variable, the validity
  1172.   of any Format Codes used, and the size the window is
  1173.   required to be.  (That is why it is best to get these fields
  1174.   directly from a database - see F10 key explanation above)
  1175.   These entries should exactly match those on the database
  1176.   structure.
  1177.  
  1178.   Format Code - You can automatically format a field on your
  1179.   File Maintenance window using one of the four Format Codes.
  1180.  
  1181.   Format Code > > must have > > >     Field Type     Field
  1182.   Size  Creates
  1183.  
  1184.   M - Memo   M    10   a Y/N field
  1185.              which if Y pops
  1186.              up a memo edit
  1187.              window.
  1188.  
  1189.   P - Phone  C    10   Formats the field
  1190.              to accept a
  1191.              phone number
  1192.              delimited like:
  1193.              (999) 999-9999
  1194.  
  1195.   S - Social Security Number     C    9    Formats the field
  1196.              to accept a social
  1197.              security number
  1198.              delimited like:
  1199.              999-99-9999
  1200.  
  1201.   Z - Zip Code    C    9    Formats the field
  1202.              to accept a ZIP
  1203.              code delimited
  1204.              like:
  1205.              99999-9999
  1206.  
  1207.   See Appendix A-How to operate a generic file maintenance
  1208.   window for information on how the generated file maintenance
  1209.   routines function from a user perspective.
  1210.                                                 Page: 28
  1211.   ADD WINDOW - PICK LIST
  1212.  
  1213.   Selecting "Pick List" from the "Add Window" sub menu wll
  1214.   present the picklist entry window.  As in the following
  1215.   screen sample.
  1216.  
  1217.  
  1218.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1219. ║              ╔════════════╗    Aeolus Software                               ║
  1220. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  1221. ╔══════════════║█Pick List██║══════════════════════════════════════════════════╗
  1222. ║        █Maint║ Di╔ PICK LIST ════════════════════════════════════╗s          ║
  1223. ╚══════════════║ TB║  Select Alias: ██████████ Index Order: █0     ║═══════════╝
  1224. ░░░░░░░░░░░░░░░║ Fi║       Comment: ██████████████████████████████ ║░░░░░░░░░░░░
  1225. ░░░░░░░░░░░░░░░║ Re║     Edit Help: N                              ║░░░░░░░░░░░░
  1226. ░░░░░░░░░░░░░░░║ Ha║                                               ║░░░░░░░░░░░░
  1227. ░░░░░░░░░░░░░░░║ Co║ Window Height: █0 Width: █0                   ║░░░░░░░░░░░░
  1228. ░░░░░░░░░░░░░░░╚═══║ Display Expression (evaluated as a macro)     ║░░░░░░░░░░░░
  1229. ░░░░░░░░░░░░░░░░░░░║ █████████████████████████████████████████████ ║░░░░░░░░░░░░
  1230. ░░░░░░░░░░░░░░░░░░░║                                               ║░░░░░░░░░░░░
  1231. ░░░░░░░░░░░░░░░░░░░║   QWERTY Scroll? N (Y/N)                      ║░░░░░░░░░░░░
  1232. ░░░░░░░░░░░░░░░░░░░║ QWERTY Key Size: █0                           ║░░░░░░░░░░░░
  1233. ░░░░░░░░░░░░░░░░░░░║                                               ║░░░░░░░░░░░░
  1234. ░░░░░░░░░░░░░░░░░░░║ Bounded By: ██████████ (fieldname)            ║░░░░░░░░░░░░
  1235. ░░░░░░░░░░░░░░░░░░░║                                               ║░░░░░░░░░░░░
  1236. ░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════════════════════╝░░░░░░░░░░░░
  1237. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1238. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1239. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1240. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1241. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1242. ▓ Enter Pick List Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
  1243.  
  1244.  
  1245.   This window type has only one windowful of information to
  1246.   enter but each entry is critical to the outcome of the "Pick
  1247.   List" window so be very careful with each field.
  1248.  
  1249.   The first two fields require the database alias name and the
  1250.   index order to use for the picklist, the alias name is
  1251.   required.  The index order can be in the range 0 to 15.
  1252.   These fields are NOT checked against entries made under the
  1253.   "Edit Databases USEd" menu option.
  1254.  
  1255.   Select Alias: - This field is required but entry is not
  1256.   checked.  If you try to bypass this field a list of .DBFs in
  1257.   the current directory will be presented for selection.
  1258.   Enter the alias name of the database in which to verify the
  1259.   GET entry.
  1260.  
  1261.   Index Order: - This field is also required.  Enter the index
  1262.   order number to use when the "Pick List" is displayed.
  1263.   Assistance with entry is available if there are index
  1264.   entries for the alias entered in the previous field.  The
  1265.   text "F10-Index List" will be displayed on the bottom of the
  1266.   window when a list is available.
  1267.  
  1268.   Comment - Always enter the BUILDER window comment, even
  1269.   though a blank is accepted.  You will, sooner or later, find
  1270.   it is easier if this is entered.
  1271.  
  1272.  
  1273.                                            Page: 29
  1274.  
  1275.   Edit Help - The "Edit Help" field during and "Add Window"
  1276.   should be left alone.  If a Y is keyed it will display an
  1277.   error message.  It is left on the screen for consistency
  1278.   with the "Change Window"/"Edit Elements" menu option.
  1279.  
  1280.   Window Height / Width - This is the only window where you
  1281.   have to enter the window dimensions, this is necessary
  1282.   because, unlike other window types, there is no reliable
  1283.   method to compute the size.  That means you will have to
  1284.   figure out the size you like and enter the number of rows
  1285.   the window will occupy and the number of columns in the
  1286.   first two fields; "Window Height" and "Width".
  1287.  
  1288.   Display Expression - Entry here can get complex and the
  1289.   BUILDER entry field will scroll side to side to a maximum of
  1290.   150 characters.  Enter anything that can be evaluated as a
  1291.   macro and returns a character type string.  You can bring in
  1292.   fields of related databases also.  Some examples:
  1293.  
  1294.   (1) assume:  primary database INVOICE related to CNAM
  1295.  
  1296.   DTOC( FDate ) + " " + Cust_Nbr + " " + CNam->Cust_Name
  1297.  
  1298.   This example does a number of things you will want to know
  1299.   about Pick List function operation.  The first field is the
  1300.   date field FDATE converted to a string in the INVOICE
  1301.   database, followed by CUST_NBR of the same database.  The
  1302.   last field is a field in another database, presumably
  1303.   related to, INVOICE by the CUST_NBR field and displays the
  1304.   field CUST_NAME from the database CNAM This way everything
  1305.   is converted to character for display.  All three of these
  1306.   fields are separated by a single space to make the display
  1307.   more readable.  BUILDER generated source code does not set
  1308.   the database relations, this is left to the programmer.  The
  1309.   philosophy being that database relations should only be set
  1310.   when absolutely necessary for performance reasons.
  1311.  
  1312.   (2) assume:  primary database EMPLYEES key EMPL_NBR
  1313.  
  1314.   Empl_Nbr + " " + TRIM( FName ) + " " + LName
  1315.  
  1316.   This is a simpler and more common example.  Three fields
  1317.   from a single database are displayed each separated by a
  1318.   single space character. The first and last fields are
  1319.   displayed as is from the database.  The FNAME field is
  1320.   TRIM()ed, however, thus shortening the length of the
  1321.   displayed text, not to worry, as the Pick List function will
  1322.   widen/shorten any display to fit into the Width you
  1323.   specified for the window.
  1324.  
  1325.   QWERTY Scroll? (Y/N) - is asking if you want to allow
  1326.   scrolling through the Pick List using the alphanumeric
  1327.  
  1328.                                            Page: 30
  1329.  
  1330.   (QWERTY) keyboard as well as the cursor controls.  If you
  1331.   enter "Y" your Pick List will have a field on the top border
  1332.   delimited by square brackets ([]) into which the user will
  1333.   be able to enter any text they like, anything entered from
  1334.   the QWERTY portion of the keyboard will cause the pick list
  1335.   to be repositioned using the QWERTY data between the
  1336.   brackets as the key expression.  For example if you have a
  1337.   pick list window displayed and the key field is a last name
  1338.   and you enter a "J" character the first record in your
  1339.   database with a last name beginning with the letter "J" will
  1340.   be displayed followed by other names in alphabetical order.
  1341.   Next you type the letter "O", this will display the names
  1342.   starting with "JO" as their last name and so on until you
  1343.   find what you're looking for. This option is very useful
  1344.   when scrolling through large databases. The backspace key
  1345.   will remove the last character entered into the QWERTY area
  1346.   and reposition the database accordingly.  If the index order
  1347.   is passed as 0 (zero), the QWERTY option will be automati
  1348.   cally turned off.
  1349.  
  1350.   WARNING:  Using the QWERTY scroll options Absolutely
  1351.   Requires the index expression to return a character value!!
  1352.  
  1353.   QWERTY Key Size - is an optional field used to override the
  1354.   default length which is determined as the length of the
  1355.   index key.  Sometimes the index key is very long and you
  1356.   will want to restrict the area available for entry, enter a
  1357.   number that is smaller than the size of the index key if you
  1358.   use this otherwise leave it as zero to use the default size.
  1359.   If you enter a value larger than the key or larger than the
  1360.   window width, the results will be unpredictable.
  1361.  
  1362.   Bounded by - will only be allowed if the "QWERTY Scroll?
  1363.   (Y/N)" field is set to "N".  Enter the name of a field -
  1364.   most likely part of the controlling index - and in the
  1365.   generated source code you will have to position the database
  1366.   where you like before the PLIST() function is called.  The
  1367.   Pick List function will only scroll records where the
  1368.   entered fieldname is equal to the value when the function
  1369.   was initiated.  These records must be contiguous in the
  1370.   database, as soon as the entered fieldname changes,
  1371.   scrolling will not be allowed.  This option restricts any
  1372.   scrolling to a subset of your database.
  1373.  
  1374.   Note that if you need to use the QWERTY Scroll feature AND
  1375.   Bounded By, this can be accomplished by editing the program
  1376.   source code manually.  See the Function Reference Guide,
  1377.   PLIST() function for more information.
  1378.  
  1379.   "Bounded by" example:
  1380.  
  1381.   You have a database that contains information on your
  1382.  
  1383.                                            Page: 31
  1384.  
  1385.   factories.  You have three factories, called Plant-A, Plant-
  1386.   B and Plant-C. You want to scroll through the Plant-B data
  1387.   records but not encounter any Plant-A or Plant-C records.
  1388.   You have an index on the PLANT_ID field (contains "A","B",
  1389.   or "C" to identify the factory).  Enter 'PLANT_ID' in the
  1390.   Bounded by Pick List field.  Then after you have generated
  1391.   the source code, add the command
  1392.  
  1393.   'DBSEEK("B")' just before executing the PLIST() function.
  1394.   This will position the database to the first Plant-B record
  1395.   and scroll ONLY those PLANT_ID records.  Therefore no Plant-
  1396.   A or C records will be seen.  Be aware that it is the
  1397.   programmers responsibility to position the record pointer
  1398.   prior to the call to PLIST()!
  1399.                                                 Page: 32
  1400.   ADD WINDOW - COPY WINDOW
  1401.  
  1402.   To make an EXACT duplicate of an existing BUILDER window,
  1403.   select the "Copy Wndw" option of the "Add Window" sub-menu.
  1404.   A picklist will be displayed showing all the windows
  1405.   available to be copied (Everything except the root menu).
  1406.   The picklist displays the procedure name (sort order) and
  1407.   the window comment on each line of the list.  Use the
  1408.   Up/Down arrows, Page Up/Page Down keys to move the highlight
  1409.   bar to the window you would like to duplicate.  Press ENTER
  1410.   to select the highlighted window for copying.
  1411.  
  1412.   The Add Window pick list will look something like this:
  1413.  
  1414.  
  1415.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1416. ║              ╔════════════╗    Aeolus Software                               ║
  1417. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  1418. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  1419. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  1420. ╚══════════════║ TBrowse    ║══════════════════════════════════════════════════╝
  1421. ░░░░░░░░░░░░░░░║ File Maint ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1422. ░░░░░░░░░░░░░░░║ Rel╔═══════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░
  1423. ░░░░░░░░░░░░░░░║ Han║█DLOG023█cust/vend aging dlog██████████║░░░░░░░░░░░░░░░░░░░
  1424. ░░░░░░░░░░░░░░░║█Cop║ DLOG025 Order Entry Detail            ║░░░░░░░░░░░░░░░░░░░
  1425. ░░░░░░░░░░░░░░░╚════║ DLOG027 entry of items                ║░░░░░░░░░░░░░░░░░░░
  1426. ░░░░░░░░░░░░░░░░░░░░║ DLOG029 Add Ship 2 in Order           ║░░░░░░░░░░░░░░░░░░░
  1427. ░░░░░░░░░░░░░░░░░░░░║ DLOG030 Order Number and Ord          ║░░░░░░░░░░░░░░░░░░░
  1428. ░░░░░░░░░░░░░░░░░░░░║ DLOG038 Look at order detail          ║░░░░░░░░░░░░░░░░░░░
  1429. ░░░░░░░░░░░░░░░░░░░░║ DLOG040 ship label qty                ║░░░░░░░░░░░░░░░░░░░
  1430. ░░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
  1431. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1432. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1433. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1434. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1435. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1436. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1437. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1438. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1439. ▓ Up/Down, PgUp/PgDn to Move Pointer ▓ ENTER to Select ▓ ESC to Exit ▓
  1440.  
  1441.  
  1442.   A prompt will then be presented that asks you to confirm
  1443.   that you would like to copy the selected window.  See the
  1444.     following screen sample shows this.                                            Page: 33
  1445.  
  1446.  
  1447.  
  1448.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1449. ║              ╔════════════╗    Aeolus Software                               ║
  1450. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  1451. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  1452. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  1453. ╚══════════════║ TBrowse    ║══════════════════════════════════════════════════╝
  1454. ░░░░░░░░░░░░░░░║ File Maint ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1455. ░░░░░░░░░░░░░░░║ Rel╔═══════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░
  1456. ░░░░░░░░░░░░░░░║ Han║█DLOG023█cust/vend aging dlog██████████║░░░░░░░░░░░░░░░░░░░
  1457. ░░░░░░░░░░░░░░░║█Cop║ DLOG025 Order Entry Detail            ║░░░░░░░░░░░░░░░░░░░
  1458. ░░░░░░░░░░░░░░░╚════║ DLOG027 entry of items                ║░░░░░░░░░░░░░░░░░░░
  1459. ░░░░░░░░░░░░░░░░░░░░║ DLOG029 Add Ship 2 in Order           ║░░░░░░░░░░░░░░░░░░░
  1460. ░░░░░░░░░░░░░░░░░░░░║ DLOG030 Order Number and Ord          ║░░░░░░░░░░░░░░░░░░░
  1461. ░░░░░░░░░░░░░░░░░░░░║ DLOG038 Look ╔═══════════════════════════════╗░░░░░░░░░░░░
  1462. ░░░░░░░░░░░░░░░░░░░░║ DLOG040 ship ║                               ║░░░░░░░░░░░░
  1463. ░░░░░░░░░░░░░░░░░░░░╚══════════════║  Create Copy of this Window?  ║░░░░░░░░░░░░
  1464. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║  Press Y-Yes or N-No          ║░░░░░░░░░░░░
  1465. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║                               ║░░░░░░░░░░░░
  1466. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════╝░░░░░░░░░░░░
  1467. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1468. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1469. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1470. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1471. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1472. ▓ Up/Down, PgUp/PgDn to Move Pointer ▓ ENTER to Select ▓ ESC to Exit ▓
  1473.  
  1474.  
  1475.   Answering Y to the above dialog will create a duplicate of
  1476.   the window selected.
  1477.                                                 Page: 34
  1478.    ADD WINDOW - HAND CODE
  1479.  
  1480.   Selecting the "Hand Code" Option from this menu will present
  1481.   a window for entry of the window comment.  Once entered, a
  1482.   text editor is placed on the screen for entry of your own
  1483.   source code statements.
  1484.  
  1485.   The editor is simply a call to the Clipper MEMOEDIT()
  1486.   Function. All the editing functions available in MEMOEDIT()
  1487.   will be available in the "Hand Code" entry window.
  1488.  
  1489.   When editing "Hand Code", Pressing the Ctrl+PgDn key
  1490.   combination will present the prompt "O.K. to Delete? (Y/N)".
  1491.   Answering Y-Yes will permanently delete the current "Hand
  1492.   Code" and remove the hand code psuedo-window from your
  1493.   application prototype.  Answering N-No will resume editing
  1494.   the "Hand Code".
  1495.  
  1496.   The hot-key Alt+P will be enabled, this will enter the
  1497.   source code statements to take and react to a yes/no prompt.
  1498.   This will only be worth using when immediately following a
  1499.   dialog box.
  1500.  
  1501.   You can enter the text "@NXTWNDW" (no quotes, in upper case
  1502.   only).  When the source code is created all occurances of
  1503.   "@NXTWNDW" will be replaced with the name of the function or
  1504.   procedure for the window which follows the hand code
  1505.   section.  This allows you to conditionally control access to
  1506.   the window that follows a hand coded section.  Also entering
  1507.   parameters to the next window, like "@NXTWNDW( cParm1,
  1508.   dParm2 )" will create these parameters in the procedure
  1509.   declaraction in the following window.
  1510.  
  1511.   If no "@NXTWNDW" is entered in a particular hand coded
  1512.   section, two additional lines of code will be added when the
  1513.   source code is generated.  They consist of a call to the
  1514.   following window (if there is one), and a RETURN command.
  1515.  
  1516.   If an "@NXTWNDW" is entered but there is no window following
  1517.   the hand coded section, a comment is entered explaining this
  1518.   error condition exists.
  1519.  
  1520.   You can use the "@NXTWNDW" command to pass parameter out of
  1521.   a hand code section, you can also use another command,
  1522.   "@FUNC" or "@FUNCTION" to pass parameters into a hand code
  1523.   section.  If used, the "@FUNC" command must be the first
  1524.   non-comment line of a hand code section it must also decare
  1525.   the hand code section as a FUNCTION or PROCEDURE.  For
  1526.   example entering the following
  1527.  
  1528.   FUNCTION @FUNC( cParm1, dParm2 )
  1529.  
  1530.  
  1531.                                            Page: 35
  1532.  
  1533.   would declare the hand code section as a function (default
  1534.   is PROCEDURE), thus requiring a value to be returned.  Also,
  1535.   since parameters are placed in the declaraction, the call to
  1536.   the hand code section from the previous window will pass
  1537.   "cParm1" and "dParm2" as parameters.  Using hand code
  1538.   sections to pass parameters facilitates the use of LOCAL
  1539.   instead of PRIVATE variables.
  1540.                                                 Page: 36
  1541.   ADD WINDOW - TBROWSE
  1542.  
  1543.   Selecting "TBrowse" from the "Add Window" menu will first
  1544.   present the TBrowse initialization screen.  See the
  1545.   following screen sampe for an example of this screen.
  1546.  
  1547.  
  1548.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1549. ║              ╔════════════╗    Aeolus Software                               ║
  1550. ║              ╔════════════════════════════════════════════╗                  ║
  1551. ╔══════════════║    Comment: ██████████████████████████████ ║══════════════════╗
  1552. ║        █Maint║  Edit Help: N                              ║ Reports          ║
  1553. ╚══════════════║                                            ║══════════════════╝
  1554. ░░░░░░░░░░░░░░░║   Database: ████████  Index Order: █0      ║░░░░░░░░░░░░░░░░░░░
  1555. ░░░░░░░░░░░░░░░║ Bounded by: ██████████                     ║░░░░░░░░░░░░░░░░░░░
  1556. ░░░░░░░░░░░░░░░║                                            ║░░░░░░░░░░░░░░░░░░░
  1557. ░░░░░░░░░░░░░░░║ Rec # Column when Initialized?    N        ║░░░░░░░░░░░░░░░░░░░
  1558. ░░░░░░░░░░░░░░░║ Allow Toggle of Rec # Column      N        ║░░░░░░░░░░░░░░░░░░░
  1559. ░░░░░░░░░░░░░░░║ Allow Append of New Records?      N        ║░░░░░░░░░░░░░░░░░░░
  1560. ░░░░░░░░░░░░░░░║ Allow Search by Index?            N        ║░░░░░░░░░░░░░░░░░░░
  1561. ░░░░░░░░░░░░░░░║ Allow Index Order Changes?        N        ║░░░░░░░░░░░░░░░░░░░
  1562. ░░░░░░░░░░░░░░░║ Allow Column Width Changing?      Y        ║░░░░░░░░░░░░░░░░░░░
  1563. ░░░░░░░░░░░░░░░║ Allow Column Freezing/UnFreezing? N        ║░░░░░░░░░░░░░░░░░░░
  1564. ░░░░░░░░░░░░░░░║ Allow Column Delete/Restore?      Y        ║░░░░░░░░░░░░░░░░░░░
  1565. ░░░░░░░░░░░░░░░║ Full Width Highlight Bar?         N        ║░░░░░░░░░░░░░░░░░░░
  1566. ░░░░░░░░░░░░░░░║ Allow Records to be Deleted?      N        ║░░░░░░░░░░░░░░░░░░░
  1567. ░░░░░░░░░░░░░░░║                                            ║░░░░░░░░░░░░░░░░░░░
  1568. ░░░░░░░░░░░░░░░╚════════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
  1569. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1570. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1571. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1572. ▓ Answer TBrowse Questions ▓ PgDn-Edit Columns ▓ ESC-Exit ▓
  1573.  
  1574.  
  1575.   Answering questions on this screen will allow you modify
  1576.   features of Builder TBrowses.  Builder TBrowses can be set
  1577.   up to view whole databases, portions of databases, or as
  1578.   child relations of other TBrowses.  You can easily activate
  1579.   several TBrowses at the same time with a small amount of
  1580.   hand coding.  There are also a few TBrowse modifications
  1581.   that can only be made by hand in the generated source.  See
  1582.   the Library Reference on the DictPut() function for more
  1583.   information on this.
  1584.  
  1585.   TBrowse initialization screen field descriptions:
  1586.  
  1587.   Comment -  The comment entered here will be placed in the
  1588.   generated source code in a Proc Map at the beginning of the
  1589.   file and in a small comment section preceeding the procedure
  1590.   where where the source for this specific window is located.
  1591.   Although entry is not required you should ALWAYS enter these
  1592.   comments.
  1593.  
  1594.   Edit Help -     Each TBrowse has a maximum of two help
  1595.   screens, the generic help screen created by Builder and the
  1596.   one you can edit here.  This help screen should include
  1597.   information about why the TBrowse is in the system.  The
  1598.   keystroke and other navigation information is included in
  1599.   the Builder created generic help screen.  Note that you
  1600.   cannot edit a help screen except when this item has been
  1601.   access from the "Change Window"/"Edit Elements" menu
  1602.  
  1603.                                            Page: 37
  1604.  
  1605.   selections.
  1606.  
  1607.   Database - Builder TBrowses will only browse databases.
  1608.   Entry into this field is required.  If you attempt to bypass
  1609.   this field, a picklist of .DBF databases in the current
  1610.   directory is presented.  Be sure that the database alias
  1611.   name you enter here will be opened in your program.  See the
  1612.   "Files" menu "Edit Databases USEd" for more information on
  1613.   the application database list.
  1614.  
  1615.   Index Order -   Enter a number between 0 and 15 here to
  1616.   indicate the index order number for the database in the
  1617.   preceeding field.  If the database was located in the
  1618.   Builder database list and there are indexes listed for that
  1619.   database the bottom border of the window will display "F10 -
  1620.   Index List" when your cursor is positioned in this field.
  1621.   Press the F10 key when this is displayed to pick an index
  1622.   order from the presented list.
  1623.  
  1624.   Bounded by -    Entry in this field is optional.  If entered
  1625.   the records accessible will be restricted to the subset
  1626.   where the field name entered here is exactly equal to the
  1627.   value it had when the browse was activated.  A browse is
  1628.   considered active when the browse pointer is displayed.
  1629.  
  1630.   Rec # Column when initialized? -    You may add a special
  1631.   column to the TBrowse that contains the database record
  1632.   number.  Answer Y here to place this column in the browse
  1633.   when the browse is first displayed.  Enter N and it will be
  1634.   left off.
  1635.  
  1636.   Allow Toggle of Rec # Column - The Alt+N key combination
  1637.   can be activated to alternately remove and add a record
  1638.   number column to the active browse.  Enter Y here to allow
  1639.   this, N to disallow.
  1640.  
  1641.   Allow Append of New Records? - Cursoring past the last
  1642.   record in a browse can, by entering Y here, allow new
  1643.   records to be added to the database.  Enter N and records
  1644.   new records cannot be added.
  1645.  
  1646.   Allow Search  by Index? - The Alt+S key combination can
  1647.   be activated to allow database index searches.  When
  1648.   selected from a browse, a prompt will be displayed with the
  1649.   current index key value which can be modified.  Change the
  1650.   field value to move to that area of the database nearest to
  1651.   what was keyed.  Enter Y here to allow this, or N to
  1652.   disallow.
  1653.  
  1654.   Allow Index Order Changes? -   The Alt+O key combination can
  1655.   be activated to allow the index order of the active browse
  1656.   to be changed.  When pressed the user will be presented a
  1657.  
  1658.                                            Page: 38
  1659.  
  1660.   list a available index orders to select from.  Enter Y here
  1661.   to allow this or N to disallow.  Note that through hand
  1662.   coding in the TBrowse source you can exclude index orders
  1663.   from the list.  See the DictPut() function in the Library
  1664.   Reference about the ORDEXCPT element.
  1665.  
  1666.   Allow Column Width Changing? - The Alt+W key combination
  1667.   can be activated to allow the width of TBrowse columns to be
  1668.   changed.  When selected from a browse the column in question
  1669.   will be highlighted and a prompt containing the current
  1670.   width will be presented.  Changing the number in the prompt
  1671.   will modifiy the column width.  Enter Y here to allow this
  1672.   or N to disallow.
  1673.  
  1674.   Allow Column Freezing/UnFreezing? - The Alt+F and Alt+U
  1675.   key combinations can be activated to allow columns to be
  1676.   frozen at the left of the browse window.  When selected fro
  1677.   ma browse the column for freezing will be highlighted and
  1678.   prompt will ask if that is the column to be frozen.
  1679.   Answering Yes will then freeze the column.   Unfreezing
  1680.   happens immediately.  Columns are unfrozen in the reverse
  1681.   order they were frozen.  Enter Y here to allow this or N to
  1682.   disallow.
  1683.  
  1684.   Allow Column Delete/Restore? - The Alt+E and Alt+R key
  1685.   combinations can be activated to allow columns to be deleted
  1686.   and restored from a browse.  Deleted columns are placed in a
  1687.   list and the list is displayed to restore them.  Before a
  1688.   colum is deleted it is highlighted and a prompt is displayed
  1689.   that asks if the column should be delected, answering Yes
  1690.   will move the column to the Restore list.  Enter Y to allow
  1691.   this or N to disallow.
  1692.  
  1693.   Full Width Highlight Bar? -    A browse can be created with a
  1694.   highlight bar that is the full width of the window.  Enter a
  1695.   Y here to allow this or N to disallow.  Note that using this
  1696.   and an alternate column color or a conditional color in a
  1697.   column will cause the column colors to work incorrectly.
  1698.   This option should be set off when alternate colors are to
  1699.   be used in browse columns.
  1700.  
  1701.   Allow Records to be Deleted? - The Alt+D key combination
  1702.   can be activated to allow browse records to be deleted.
  1703.   Note that in order to get use of the Alt+D key combination
  1704.   Builder places the Clipper ALTD( 0 ) function in the
  1705.   beginning of the generated source.  If you need access to
  1706.   the Clipper debugger, you will need to comment this out
  1707.   first !!
  1708.  
  1709.   Note that if you selected a Bounded by and you will be
  1710.   allowing records to be added, you will be presented with a
  1711.   list of fields after this screen.  The list will contain the
  1712.                                            Page: 39
  1713.  
  1714.   fields in the database to be browsed.  Tag all fields that
  1715.   preceed the Bounded by field in the index key and the
  1716.   Bounded by field.  This will create items that will
  1717.   initialize key fields when new records are added.
  1718.  
  1719.   Note also that if you selected your browse with a Bounded by
  1720.   field AND you want to allow index searches you must enter an
  1721.   item into the browse procedure by hand.  Be sure to enter
  1722.   the BNDPFX DictPut() element or your index searches will not
  1723.   work.  See the DictPut() function in the Library Reference
  1724.   for more information.
  1725.  
  1726.   Warning:  You will want to be careful to select browse
  1727.   options that are not mutually exclusive.  For example
  1728.   allowing index order changes on a Bounded by browse will,
  1729.   obviously,  not work.
  1730.  
  1731.   Once the TBrowse initialization screen has been completed,
  1732.   the column entry screen is presented.  Enter as many columns
  1733.   as you like for your browse, but be aware that the more that
  1734.   are active the slower the performance.  It is, like other
  1735.   Builder windows, much easier to add columns by using the
  1736.   "Import" menu item from the "Additional Items" menu.
  1737.  
  1738.   This is an example of the TBrowse column entry screen:
  1739.  
  1740.  
  1741.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1742. ║              ╔════════════╗    Aeolus Software                               ║
  1743. ║              ╔════════════════════════════════════════════╗                  ║
  1744. ╔══════════════║    Comment: ██████████████████████████████ ║══════════════════╗
  1745. ║        █Maint║  Edit He╔═ TBROWSE ════════╡Record: 1 of 0╞════╗orts          ║
  1746. ╚══════════════║         ║ Column Heading:                      ║══════════════╝
  1747. ░░░░░░░░░░░░░░░║   Databa║ ████████████████████████████████████ ║░░░░░░░░░░░░░░░
  1748. ░░░░░░░░░░░░░░░║ Bounded ║ Picture:                             ║░░░░░░░░░░░░░░░
  1749. ░░░░░░░░░░░░░░░║         ║ ████████████████████████████████████ ║░░░░░░░░░░░░░░░
  1750. ░░░░░░░░░░░░░░░║ Rec # Co║                                      ║░░░░░░░░░░░░░░░
  1751. ░░░░░░░░░░░░░░░║ Allow To║      Editable: █ (Y/N)               ║░░░░░░░░░░░░░░░
  1752. ░░░░░░░░░░░░░░░║ Allow Ap║ Default Color: █ (1, 2, or <space>)  ║░░░░░░░░░░░░░░░
  1753. ░░░░░░░░░░░░░░░║ Allow Se║ Initial Width: ██0                   ║░░░░░░░░░░░░░░░
  1754. ░░░░░░░░░░░░░░░║ Allow In║                                      ║░░░░░░░░░░░░░░░
  1755. ░░░░░░░░░░░░░░░║ Allow Co║ Highlight Condition:  (operate on x) ║░░░░░░░░░░░░░░░
  1756. ░░░░░░░░░░░░░░░║ Allow Co║ ████████████████████████████████████ ║░░░░░░░░░░░░░░░
  1757. ░░░░░░░░░░░░░░░║ Allow Co║ Highlight Color: █ (1, 2, or <space>)║░░░░░░░░░░░░░░░
  1758. ░░░░░░░░░░░░░░░║ Full Wid║                                      ║░░░░░░░░░░░░░░░
  1759. ░░░░░░░░░░░░░░░║ Allow Re║ Field Name: ██████████               ║░░░░░░░░░░░░░░░
  1760. ░░░░░░░░░░░░░░░║         ║ Field Type: █                        ║░░░░░░░░░░░░░░░
  1761. ░░░░░░░░░░░░░░░╚═════════║ Field Length: █0 Decimal █0          ║░░░░░░░░░░░░░░░
  1762. ░░░░░░░░░░░░░░░░░░░░░░░░░║                                      ║░░░░░░░░░░░░░░░
  1763. ░░░░░░░░░░░░░░░░░░░░░░░░░╚═╡F10-Addtional Items╞════════════════╝░░░░░░░░░░░░░░░
  1764. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1765. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  1766.  
  1767.  
  1768.   Enter TBrowse columns like other Builder elements, fill in
  1769.   the screen and press PgDn to save.  Press PgUp/PgDn to see
  1770.   the previous/next column data.  Enter TBrowse columns as
  1771.   follows:
  1772.  
  1773.   Column Heading -     Enter the text of the column heading
  1774.   here, use a semicolon (;) in the heading as a 'carriage
  1775.  
  1776.                                            Page: 40
  1777.  
  1778.   return' to create multi-row headings.  A column heading is
  1779.   required for each column.
  1780.  
  1781.   Picture -  Enter either a valid Clipper picture string in
  1782.   this field or one of two special pictures that are
  1783.   interpreted by Builder when the code is generated.  The
  1784.   special pictures are @MEMO and @EXEC:<function>.
  1785.  
  1786.   If the column is a memo data type enter @MEMO in the picture
  1787.   field.  Whenever any alphabetic or numeric key or ENTER is
  1788.   pressed when the browse pointer is in this column a window
  1789.   will be displayed with the memo contents inside.  If the
  1790.   column is set as editable, the cursor will be turned on and
  1791.   the memo will be editable otherwise the memo is display
  1792.   only.
  1793.  
  1794.   If @EXEC:<function> is entered in the picture field, the
  1795.   column data will not be displayed from a database but will
  1796.   be the literal text of whatever is in the Field Name field
  1797.   on this screen.  Whenever any alphabetic or numeric key or
  1798.   ENTER is pressed when the browse pointer is in this column
  1799.   <function> will be executed.  Be sure to put paranthesis and
  1800.   any parameters you wish to include in the function call.
  1801.   For example to display a message using the Builder MsgBox()
  1802.   function you would enter the following:
  1803.  
  1804.    @EXEC:MsgBox( {"Just a Little Message", ;
  1805.         "to Show How the", ;
  1806.         "@EXEC for TBrowses Works" })
  1807.  
  1808.   Though when keying this into Builder you would place it all
  1809.   on one line and wouldn't use the semicolon.
  1810.  
  1811.   Editable - Enter Y here to allow the database field in
  1812.   this column to be modified.  Whenever any alphabetic or
  1813.   numeric key or the ENTER key is pressed the cursor is
  1814.   positioned in the pointer area of the current column and the
  1815.   field can be edited.  If the Editable option is turned off
  1816.   then alphabetic and numeric key or ENTER sounds a tone.
  1817.  
  1818.   Default Color - Leave this field blank and the column
  1819.   will be displayed in the same color as the main browse
  1820.   window.  Enter a 1 (one) to display the column in the
  1821.   Builder highlight 1 color or two to display it in highlight
  1822.   2.  See the Colors section in this manual for information on
  1823.   seeing and changing the TBrowse colors.
  1824.  
  1825.   Initial Width - Leave this field as zero and the column
  1826.   will be sized automatically by the Clipper TBrowse mechanism
  1827.   or enter the non-default width to set this column to another
  1828.   width.
  1829.  
  1830.  
  1831.                                            Page: 41
  1832.  
  1833.   Highlight Condition (operate on x) -     Leave this field
  1834.   blank and all the records in the column willl be displayed
  1835.   in the column color.  By entering a value here you can
  1836.   change the color of selected records of a TBrowse column.
  1837.   The variable x will be passed into a codeblock and will
  1838.   contain the database field data of this column.  Whatever
  1839.   you enter here will be the code placed in that codeblock.
  1840.   Your code MUST return a logical data type.  If .T. is
  1841.   returned the record is displayed in a different color that
  1842.   the rest of the column.  For example you want to display a
  1843.   column that contains a date data type in a different color
  1844.   when the column field contains a value that is 30 days older
  1845.   than todays date, enter this:
  1846.  
  1847.    DATE() - x > 29
  1848.  
  1849.   Whenever the DATE() minus the field data in a record (x) is
  1850.   greater than 29 then that field in the column will be
  1851.   displayed in a different color.  See the next field on this
  1852.   screen for choosing which color.
  1853.  
  1854.   Highlight Color -    Enter a 1, 2, or blank here to choose
  1855.   the color to display when a highlight condition is used.
  1856.   Enter a 1 or 2 to select highlight 1 or highlight 2 or leave
  1857.   this blank to select the browse main color.  Note that this
  1858.   is only used in conjuction with the preceeding field and
  1859.   that a color change will not be noticable if the color
  1860.   selected here is the same as the Default Color field on this
  1861.   screen.
  1862.  
  1863.   Field Name -    Must be a valid field name in the database
  1864.   selected in the TBrowse initialization screen unless the
  1865.   @EXEC picture value is used, in that case the field cannot
  1866.   be blank.
  1867.  
  1868.   Field Type -    database field data type.
  1869.   Field Length -  database field length.
  1870.   Field Decimal - database field decimal positions for
  1871.   numerics.
  1872.  
  1873.   Note that you can use a little trick to to place rarely used
  1874.   columns in the Restore column list before the browse is
  1875.   activated with some simple hand coding.  See the DelColPut()
  1876.   function in the Library Reference for information on this.
  1877.  
  1878.   If you want to set up more than one TBrowse and have them
  1879.   all visible at the same time, see the documentation in the
  1880.   Library Reference on the BrowseDb() function.  Also see the
  1881.   Builder Library Reference on the DictPut() and DictGet()
  1882.   functions for documentation on how to use your own key
  1883.   handler, remove index orders from the index list, and add a
  1884.   SEEK prefix for bounded by TBrowses.
  1885.  
  1886.                                            Page: 42
  1887.  
  1888.   ADD WINDOW - REL MAINT
  1889.  
  1890.   Selecting the "Rel Maint" option from the "Add Window" menu
  1891.   will present the Rel Maint initialization screen.  This
  1892.   looks like the following screen samaple:
  1893.  
  1894.  
  1895.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1896. ║              ╔════════════╗    Aeolus Software                               ║
  1897. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  1898. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  1899. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  1900. ╚══════════════║ TBrowse    ║══════════════════════════════════════════════════╝
  1901. ░░░░░░░░░░░░╔═════════════════════════════════════════════════════════════════╗░
  1902. ░░░░░░░░░░░░║ Select File: ████████   Index Order: █0   Menu Opts: ACD        ║░
  1903. ░░░░░░░░░░░░║  Bounded by: ██████████ Parent File: ████████ Field: ██████████ ║░
  1904. ░░░░░░░░░░░░║     Comment: ██████████████████████████████                     ║░
  1905. ░░░░░░░░░░░░║                                                                 ║░
  1906. ░░░░░░░░░░░░╚═════════════════════════════════════════════════════════════════╝░
  1907. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1908. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1909. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1910. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1911. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1912. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1913. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1914. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1915. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1916. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1917. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1918. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  1919. ▓ Enter Procedure Comment ▓ ESC-Exit ▓
  1920.  
  1921.  
  1922.   Use Builder Rel Maint's to set up basic file maintenance for
  1923.   child database relations.  You needn't have actual
  1924.   DBRELATION()'s set up, as this would cause a great
  1925.   performance loss, simply enter these fields carefully.
  1926.  
  1927.   Note that you may want to preceed Rel Maint windows with a
  1928.   small Hand Code Section that will position the database to
  1929.   the correct record.
  1930.  
  1931.   Initialize a Rel Maint as follows:
  1932.  
  1933.   Select File -   Enter the database alias name of the database
  1934.   you wish to be maintained in this Rel Maint window.  It is
  1935.   best to enter an alias that has already been entered into
  1936.   the Builder database list.  This field is required and if
  1937.   bypassed a list of .DBF databases in the current directory
  1938.   will be presented. See "Files"/"Edit Databases USEd" in this
  1939.   document for more information on this.
  1940.  
  1941.   Index Order -   Enter a number between 0 and 15 here to
  1942.   indicate the index order number to use to maintain
  1943.   relational integrity.  If the alias name entered in the
  1944.   previous field is found in the Builder database list the
  1945.   bottom border of this window will display "F10 - Index List"
  1946.   when the cursor is positioned here.  If allowed, press F10
  1947.   to select an index order from this list.
  1948.  
  1949.                                            Page: 43
  1950.  
  1951.   Menu Opts -     Normally a Rel Maint has three menu options,
  1952.   these are "Add", "Change", and "Delete".  These are
  1953.   represented by the letters "A", "C",  and "D" in this field.
  1954.   Removing any of these letters will cause it's menu option to
  1955.   be removed from the maintenance window in the application.
  1956.   If this field is blank or none of the letters "A", "C", or
  1957.   "D" is present the Rel Maint will be constructed without any
  1958.   menu options and be a view only window.
  1959.  
  1960.   Bounded by -    Enter the field name that is in the Select
  1961.   File database whose value must remain exactly the same as
  1962.   when the Rel Maint is started.  If the Bounded by field
  1963.   value changes that marks either the top or the bottom of the
  1964.   Rel Maint records.  Entry here is required.
  1965.  
  1966.   Parent File -   Enter the database alias name of the parent
  1967.   database for the Rel Maint here.  This should also be
  1968.   entered into the Builder database list.  Entry into this
  1969.   field is required if bypassed a list of .DBF files in the
  1970.   current directory is presented.
  1971.  
  1972.   Field -    Enter the name of the field in the parent database
  1973.   that must exactly equal the field in the child database to
  1974.   maintain the relationship.  Although there may be several
  1975.   fields included in a relation condition there will always be
  1976.   one field that is the lowest level sort order and will still
  1977.   maintain the relationship.
  1978.  
  1979.   Comment -  The comment entered here will be placed in the
  1980.   generated source code in a Proc Map at the beginning of the
  1981.   file and in a small comment section preceeding the procedure
  1982.   where where the source for this specific window is located.
  1983.   Although entry is not required you should ALWAYS enter these
  1984.   comments.
  1985.  
  1986.   Once the Rel Maint initialization screen is properly filled
  1987.   out the elements screen is presented.  On this screen you
  1988.   enter the display and keyboard entry items each screenful of
  1989.   information about these is call an element.
  1990.  
  1991.     The elements screen will look like the following:                                            Page: 44
  1992.  
  1993.  
  1994.  
  1995.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  1996. ║              ╔════════════╗    Aeolus Software                               ║
  1997. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  1998. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  1999. ║        █Maint║ Dialog     ║         Process                 Reports          ║
  2000. ╚══════════════║ TBrowse    ║══════════════════════════════════════════════════╝
  2001. ░░░░░░░░░░░░╔═════════════════════════════════════════════════════════════════╗░
  2002. ░░░░░░░░░░░░║ Select File: TEST████   Index Order: █1   Menu Opts: ACD        ║░
  2003. ░░░░░░░░░░░░║  Bo╔═ REL MAINT ══════════╡Record: 1 of 0╞════╗ield: TEST██████ ║░
  2004. ░░░░░░░░░░░░║    ║ Display Text:                            ║                 ║░
  2005. ░░░░░░░░░░░░║    ║ ████████████████████████████████████████ ║                 ║░
  2006. ░░░░░░░░░░░░╚════║ Enhanced Color?: N (Y/N)                 ║═════════════════╝░
  2007. ░░░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░░░░░░░░
  2008. ░░░░░░░░░░░░░░░░░║ GET var: ██████████  Length: ██0         ║░░░░░░░░░░░░░░░░░░░
  2009. ░░░░░░░░░░░░░░░░░║ Picture:                                 ║░░░░░░░░░░░░░░░░░░░
  2010. ░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░
  2011. ░░░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░░░░░░░░
  2012. ░░░░░░░░░░░░░░░░░╚═╡F10-Addtional Items╞════════════════════╝░░░░░░░░░░░░░░░░░░░
  2013. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2014. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2015. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2016. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2017. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2018. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2019. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  2020.  
  2021.  
  2022.   It is easiest to initially add all the Rel Maint elements by
  2023.   using the "Import" option on the "Additional Items" menu.
  2024.   See the section in this document entitled "Addition Items
  2025.   Menu" for more information on how to do this.
  2026.  
  2027.   You will want to be careful not to put any key fields on
  2028.   your Rel Maint screen.  Allowing entry into a key field
  2029.   would cause the database pointer to possibly be moved
  2030.   outside the boundries you intend.
  2031.  
  2032.   Enter the fields on the element screen as follows.  Press
  2033.   the PgDn key to save and element.  Press PgUp and PgDn to
  2034.   move to the previous and next elements.
  2035.  
  2036.   Display Text -  The text entered here will become text
  2037.   displayed in the Rel Maint window.  If the GET var field on
  2038.   this screen is left blank then entry here is required.
  2039.  
  2040.   Enhanced Color? -    Enter a Y here to have the Display Text
  2041.   shown in the "Window Message" screen color.  Enter N for
  2042.   "Window Normal" as the color.  You can view/change these
  2043.   colors from the "Main Colors" Builder screen.  See the
  2044.   Colors section in this document for more information on
  2045.   application colors.
  2046.  
  2047.   GET var -  Enter the name of the database field for a screen
  2048.   GET to be placed in the Rel Maint window here.  Normally you
  2049.   will not need to enter this value because the "Import" menu
  2050.   option should place the correct data here for you.
  2051.  
  2052.   Length -        Enter the length of the GET var variable
  2053.   here.  Normally you will not need to enter this value
  2054.   because the "Import" menu option should place the correct
  2055.  
  2056.                                            Page: 45
  2057.  
  2058.   data here for you.
  2059.  
  2060.   Picture - If you want a PICTURE clause added to your GET,
  2061.   enter a valid Clipper PICTURE (either with or without
  2062.   quotes) in the "Picture" field.
  2063.  
  2064.   Enter "@MEMO" here if the "GET var" is a memo data type (no
  2065.   quotes all caps).
  2066.  
  2067.   Enter '@MENU:{"prompt1","prompt2",...,"promptn"}' to create
  2068.   a 'Menu' GET (leaving out the two single quotes).  All menu
  2069.   GETs will be positioned across the screen (horizontal), the
  2070.   length will be computed and the field presented on the
  2071.   BUILDER screen with the correct size.  The "GET var" for a
  2072.   'Menu' GET must be a character or numeric data type ONLY.
  2073.   The menu code will read the data type and return the menu
  2074.   selection based on the data type.
  2075.  
  2076.   Enter '@DROPDOWN:{"Entry1","Entry2",...,"Entryn"}' here to
  2077.   create a dropdown list box GET (leaving out the two single
  2078.   quotes).  The length of the display will be determined as
  2079.   the length of the longest array element.  The GET variable
  2080.   MUST be a numeric data type!  The value placed in the "Get
  2081.   var:" will be the array element number selected.  When the
  2082.   drop down listbox has GET focus the up/down arrow keys will
  2083.   not move to the previous/next get but instead will move
  2084.   through the array selections.  Use the TAB/Shift+TAB to move
  2085.   between fields.  Also the Alt+DownArrow key or clicking on
  2086.   the arrow button will display the drop down listbox.
  2087.  
  2088.   Note: @MENU is NOT available to Summer '87 Users!!
  2089.                                                 Page: 46
  2090.   OPTIONS
  2091.  
  2092.   Select "Options" from the BUILDER main menu to modify the
  2093.   information you entered at system startup.
  2094.  
  2095.   See the section in this document titled "GETTING STARTED"
  2096.   for a detailed list of all the "Options" and their allowable
  2097.   values.
  2098.                                                 Page: 47
  2099.   FILES
  2100.  
  2101.   Selecting "Files" from the BUILDER main menu will present
  2102.   the "Files" submenu which contains four selections that deal
  2103.   with files for the application you are building.  It looks
  2104.   like the following screen example.
  2105.  
  2106.  
  2107.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2108. ║                 ╔═════════════════════════╗are                               ║
  2109. ║                 ║█Edit Databases USEd█████║plication                         ║
  2110. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2111. ║        █Maintena║ Data Dictionary         ║                 Reports          ║
  2112. ╚═════════════════║ Generate Source Code    ║══════════════════════════════════╝
  2113. ░░░░░░░░░░░░░░░░░░╚═════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2114. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2115. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2116. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2117. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2118. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2119. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2120. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2121. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2122. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2123. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2124. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2125. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2126. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2127. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2128. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2129. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2130. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2131. ▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit ▓
  2132.  
  2133.  
  2134.   The Files menu has four options:
  2135.   Edit Databases USEd - Provides BUILDER with a list of
  2136.   databases and indexes your application will require.
  2137.  
  2138.   Modify/Create Structure - Create or change .DBF databases
  2139.   structures.
  2140.  
  2141.   Data Dictionary - Edit, Update, or Report the Builder Data
  2142.   Dictionary.
  2143.  
  2144.   Generate Source Code - Creates a BUILDER source file (.PR1),
  2145.   a header file (.ch) for the application and, if none already
  2146.   exists, a make (.rmk) file for the application.
  2147.                                                 Page: 48
  2148.   FILES - EDIT DATABASES USED
  2149.  
  2150.   Selecting the "Edit Databases USEd" option of the "Files"
  2151.   submenu will present the database/index list window which
  2152.   will allow you to create and maintain a list of all the
  2153.   databases and indexes your system will require.  As in the
  2154.   following screen sample.
  2155.  
  2156.  
  2157.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2158. ║                 ╔═════════════════════════╗are                               ║
  2159. ║                 ║█Edit Databases USEd█████║plication                         ║
  2160. ╔═════════════════║ Mo╔═ DATABASES ════════════════════╡Record: 1 of 0╞════╗═══╗
  2161. ║        █Maintena║ Da║ Database: ████████ MemVar Prefix: █                ║   ║
  2162. ╚═════════════════║ Ge║    Alias: ████████      RDD Name: ████████         ║═══╝
  2163. ░░░░░░░░░░░░░░░░░░╚═══║                                                    ║░░░░
  2164. ░░░░░░░░░░░░░░░░░░░░░░║ Indexes   Key Expression                           ║░░░░
  2165. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2166. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2167. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2168. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2169. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2170. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2171. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2172. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2173. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2174. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2175. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2176. ░░░░░░░░░░░░░░░░░░░░░░║ ████████  ████████████████████████████████████████ ║░░░░
  2177. ░░░░░░░░░░░░░░░░░░░░░░║                                                    ║░░░░
  2178. ░░░░░░░░░░░░░░░░░░░░░░╚════════════════════════════════════════════════════╝░░░░
  2179. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2180. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2181. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  2182.  
  2183.  
  2184.   Database - Enter the filename of a database your system will
  2185.   need opened in the this field.
  2186.  
  2187.   MemVar Prefix - Optionally enter the "Memory variable
  2188.   prefix" character.  You may enter any alphabetic character,
  2189.   the letter "Q" is the default.  When the database is opened,
  2190.   a memory variable will be created for every field in the
  2191.   database.  The memory variable will be identical to the
  2192.   field variable except it will be prefixed by the character
  2193.   you enter in this field.  See the DBPUBL and DBSTOR function
  2194.   documentation in the BUILDER Library Reference for more
  2195.   information.  Only consider entering this field if  you are
  2196.   producing Summer '87 style code.  For Clipper 5.x users be
  2197.   sure to leave this blank, BUILDER will enter is automati
  2198.   cally when the source is generated - see the header (.ch)
  2199.   file for your application for the prefixes automatically
  2200.   selected by BUILDER.
  2201.  
  2202.   WARNING for Summper '87 users::The "Memory variable prefix"
  2203.   can DESTROY your data if used improperly!  For example you
  2204.   have two database fields:  ZREAL_DATA1 and ZREAL_DATA2.  The
  2205.   field names are both at the Clipper maximum of 10
  2206.   characters.  When converted to memory variables using the
  2207.   "Memory variable prefix" character, they will become
  2208.   (assuming a prefix character of "Q") QZREAL_DATA and
  2209.  
  2210.                                            Page: 49
  2211.  
  2212.   QZREAL_DATA!  Identical and the second field's data will be
  2213.   lost.  The moral to the story is NEVER EXCEED 9 CHARACTER
  2214.   FIELD NAMES!
  2215.  
  2216.   Alias - If the database name in the "database" field is not
  2217.   the alias you want to use in your program, enter the
  2218.   alternate alias in this field.  Note that some valid
  2219.   filename characters cannot be used in the alias - I have not
  2220.   seen this anomaly documented in any Clipper manuals or
  2221.   books. (watch out for hyphens)
  2222.  
  2223.   RDD Name - Enter the name of any available RDD in this field
  2224.   and the database plus the associated indexes will be opened
  2225.   using that RDD.  The first three characters of the RDD name
  2226.   will be assumed to be the database filename extension.  Note
  2227.   that BUILDER uses a 'fake' RDD called "DBFIDX" for access to
  2228.   FoxPro ".IDX" files, using "DBFCDX" allows access to FoxPro
  2229.   ".CDX" databases.  This is neccesary because both ".IDX" and
  2230.   ".CDX" indexes are supported with the Clipper "DBFCDX" RDD.
  2231.  
  2232.   Indexes / Key Expression - There is room to open twelve (12)
  2233.   indexes for any database, if you need more continue on the
  2234.   next record and adjust the source code, enter the index name
  2235.   under the heading "Indexes" and the key expression
  2236.   associated with it under the "Key Expression" heading.
  2237.                                                 Page: 50
  2238.   FILES - MODIFY/CREATE STRUCTURE
  2239.  
  2240.   To modify the structure of an existing "DBFNTX" .DBF
  2241.   database or create a .DBF database select the "Modify/Create
  2242.   Structure" option of the "Files" submenu.  You should see a
  2243.   screen similar to the following sample.
  2244.  
  2245.  
  2246.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2247. ║                 ╔═════════════════════════╗are                               ║
  2248. ║                 ║ Edit Databases USEd     ║plication                         ║
  2249. ╔═════════════════║█Modify/Create Structure█║══════════════════════════════════╗
  2250. ║        █Maintena║ Da╔═════════════════════════════════╗     Reports          ║
  2251. ╚═════════════════║ Ge║ Database: █████████████████████ ║══════════════════════╝
  2252. ░░░░░░░░░░░░░░░░░░╚═══║                                 ║░░░░░░░░░░░░░░░░░░░░░░░
  2253. ░░░░░░░░░░░░░░░░░░░░░░╚═════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░
  2254. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2255. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2256. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2257. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2258. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2259. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2260. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2261. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2262. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2263. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2264. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2265. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2266. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2267. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2268. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2269. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2270. ▓ Enter Database Name ▓ ESC-Exit ▓
  2271.  
  2272.  
  2273.   Selecting this option will present a dialog which will
  2274.   require you to enter the name of a database whose structure
  2275.   you want to modify/create.  If you press ENTER with the
  2276.   "Database" entry field blank and there are .DBF files in the
  2277.   default DOS directory, a pick list will be presented for you
  2278.   to select from these files.  If you press the F10 key while
  2279.   the picklist is displayed, you will be able to print ALL the
  2280.   structures listed in the picklist window at once .  You must
  2281.   select something from the picklist or enter something into
  2282.   this dialog to get to the structure modification/creation
  2283.   window.
  2284.  
  2285.   The structure modification window contains four columns into
  2286.   which you enter your database structure.  See the following
  2287.   sample screen .
  2288.                                                 Page: 51
  2289.  
  2290.  
  2291.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2292. ║                 ╔═════════════════════════╗are                               ║
  2293. ║                 ║ Edit Databases USEd     ║plication                         ║
  2294. ╔═════════════════║█Modify/Create Structure█║══════════════════════════════════╗
  2295. ║        █Maintena║ Da╔═════════════════════════════════╗     Reports          ║
  2296. ╚═════════════════║ Ge║ Database:  TEST████████████████ ║══════════════════════╝
  2297. ░░░░░░░░░░░░░░░░░░╚═══║    ╔══════════════════════════════════════╗░░░░░░░░░░░░░
  2298. ░░░░░░░░░░░░░░░░░░░░░░╚════║  Structure:  TEST.DBF                ║░░░░░░░░░░░░░
  2299. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║                                      ║░░░░░░░░░░░░░
  2300. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ╔═Name═══════Type══════Len═Dec═╗   ║░░░░░░░░░░░░░
  2301. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║ ██████████ █████████ ██0 ██0 ║   ║░░░░░░░░░░░░░
  2302. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2303. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2304. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2305. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2306. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2307. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2308. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2309. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ║                              ║   ║░░░░░░░░░░░░░
  2310. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║   ╚══════════════════════════════╝   ║░░░░░░░░░░░░░
  2311. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║                                      ║░░░░░░░░░░░░░
  2312. ░░░░░░░░░░░░░░░░░░░░░░░░░░░╚═╡F10-Print Structure╞════════════════╝░░░░░░░░░░░░░
  2313. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2314. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2315. ▓ Up/Down-Prev/Next Field ▓ 1st Char is A-Z, Rest Are 0-9, A-Z or _ ▓ ESC-Exit ▓
  2316.  
  2317.  
  2318.   Enter the field name in the first column, the first
  2319.   character must be "A" through "Z", the rest of the field
  2320.   name may contain any alphabetic or numeric characters plus
  2321.   the underscore.  A field name can be from one to ten
  2322.   characters in length.
  2323.  
  2324.   The second column, "Type", refers to the field data type.
  2325.   There are five possible field data types, you only need to
  2326.   enter the first character of the field type you want.  The
  2327.   five field data types are as follows:
  2328.  
  2329.   C - Character.  Alphanumeric text type data.
  2330.   N - Numeric.    Containing a value that can be operated on
  2331.   using mathematical calculations.
  2332.   D - Date.  Will only be allowed to have a valid date.  Can
  2333.   use mathematical calculations to get a resultant date also.
  2334.   M - Memo.  System will generate a .DBT file to store "word
  2335.   processing" like text.
  2336.   L - Logical.    Can be set to true (.t.) or false (.f.) only.
  2337.  
  2338.   The third column is the length for the field of the name and
  2339.   type already entered.  If you entered Date, Memo, or Logical
  2340.   as the field type; the length will be automatically entered
  2341.   for you.  The maximum length for a Character field is 255
  2342.   bytes, for Numeric 20.  Date, Memo, and Logical field
  2343.   lengths are static fixed sizes and entered by BUILDER
  2344.   automatically.
  2345.  
  2346.   The fourth column is only used if the field type is set to
  2347.   Numeric and the allowable size varies.  The allowable values
  2348.   (as with the other three columns) will be displayed on the
  2349.   bottom line of the screen.
  2350.  
  2351.  
  2352.                                            Page: 52
  2353.  
  2354.   Use the up/down arrows and page up/page down keys to move
  2355.   between previously defined fields.  Press the F10 key and
  2356.   the database structure will be printed at the printer port
  2357.   assigned in the "Printer Port" field of the "Options"
  2358.   window.
  2359.  
  2360.   Press Ctrl+N to insert a field and Ctrl+Y to delete a field.
  2361.   These are the only key combinations not displayed on the
  2362.   screen so you will need to remember them.  They are the same
  2363.   as in dBASE III+ so it shouldn't be difficult.
  2364.  
  2365.   Press the ESC key to exit.
  2366.  
  2367.   If you have made any changes a dialog window will be
  2368.   presented asking if you would like to make the structure
  2369.   changes permanent.  Answer Yes or No to the question.  If
  2370.   you answer YES the old structure will be saved to a .BAK
  2371.   file, the new structure will be appended with the old
  2372.   structures data records if there were any.  If you answer
  2373.   No, nothing will be changed.
  2374.                                                 Page: 53
  2375.   FILES - DATA DICTIONARY
  2376.  
  2377.   The Builder dictionary menu consists of four menu items and
  2378.   looks like the following screen:
  2379.  
  2380.  
  2381.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2382. ║                 ╔═════════════════════════╗are                               ║
  2383. ║                 ║ Edit Databases USEd     ║plication                         ║
  2384. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2385. ║       █Maintenan║█Data Dictionary█████████║                 Setup            ║
  2386. ╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
  2387. ░░░░░░░░░░░░░░░░░░╚════════║█Edit Data Dictionary███████████║░░░░░░░░░░░░░░░░░░░
  2388. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from Another Dictionary ║░░░░░░░░░░░░░░░░░░░
  2389. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from "Databases USEd"   ║░░░░░░░░░░░░░░░░░░░
  2390. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Data Dictionary Reports        ║░░░░░░░░░░░░░░░░░░░
  2391. ░░░░░░░░░░░░░░░░░░░░░░░░░░░╚════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
  2392. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2393. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2394. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2395. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2396. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2397. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2398. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2399. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2400. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2401. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2402. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2403. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2404. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2405. ▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select▓ ESC-Exit ▓
  2406.  
  2407.  
  2408.   The Builder Data Dictionary allows you to create a list of
  2409.   all the database and memory variable elements you will be
  2410.   using for your application.  For each database field or
  2411.   memory variable in your system you can maintain several
  2412.   defaults.  The defaults entered into the Data Dictionary are
  2413.   copied to Builder windows when an "Import from Data
  2414.   Dictionary" is performed.  This is especially useful for
  2415.   larger systems where many programs will be created using the
  2416.   same set of databases. Or when database fields are going to
  2417.   be used in many windows of a system.  This removes the need
  2418.   to re-enter the display text, picture, valid information,
  2419.   and help text every time a database field or memory variable
  2420.   is used.
  2421.  
  2422.   Data Dictionary elements can easily be shared between
  2423.   Builder applications, eliminating the need to re-enter
  2424.   information in a new application by utilizing the data
  2425.   dictionary items from  previous Builder systems.
  2426.  
  2427.   Two simple reports are included to help in documenting your
  2428.   applications.
  2429.  
  2430.   If you are creating a "quick and dirty" system with Builder,
  2431.   it is advisable to NOT use the Data Dictionary.  In this
  2432.   type of system, using the Data Dictionary can actually cause
  2433.   an increase in the amount of time needed to create a working
  2434.   system.
  2435.  
  2436.  
  2437.                                            Page: 54
  2438.  
  2439.   Use each of the menu options for the following purposes:
  2440.  
  2441.   Edit Data Dictionary - Use this to change or delete a
  2442.   dictionary item.  You can add memory variable items, but not
  2443.   database items (Use 'Update from "Databases USEd"' to add
  2444.   database fields).  You can also delete an entire database
  2445.   from the dictionary using this menu option.
  2446.  
  2447.   Update from Another Dictionary - Use this option to add
  2448.   items to the current dictionary from another Builder Data
  2449.   Dictionary.
  2450.  
  2451.   Update from "Databases USEd - Use this option to initialize
  2452.   or update your data dictionary from the fields of the
  2453.   databases that have been entered into the "Databases USEd"
  2454.   list for your Builder application.
  2455.  
  2456.   Data Dictionary Reports - You can print the data dictionary
  2457.   reports using this menu option.
  2458.  
  2459.   Select the data dictionary menu option to accomplish what
  2460.   you require, or press ESC to exit this menu.
  2461.                                                 Page: 55
  2462.   FILES - DATA DICTIONARY - Edit Data Dictionary
  2463.  
  2464.   When selected, you will be presented with a list of
  2465.   databases (plus "*MEMVAR*") whose fields are available to be
  2466.   edited.  Similar to the following should appear.
  2467.  
  2468.  
  2469.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2470. ║                 ╔═════════════════════════╗are                               ║
  2471. ║                 ║ Edit Databases USEd     ║plication                         ║
  2472. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2473. ║       █Maintenan║█Data█Dictionary█████████║                 Setup            ║
  2474. ╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
  2475. ░░░░░░░░░░░░░░░░░░╚════════║█Edit█Data█Dictionary███████████║░░░░░░░░░░░░░░░░░░░
  2476. ░░╔══════════════════════════════════════════════════╗onary ║░░░░░░░░░░░░░░░░░░░
  2477. ░░║█*MEMVAR*█System█Memory█Variables█████████████████║Ed"   ║░░░░░░░░░░░░░░░░░░░
  2478. ░░║ GEVAL                                            ║      ║░░░░░░░░░░░░░░░░░░░
  2479. ░░║ PASSWORD                                         ║══════╝░░░░░░░░░░░░░░░░░░░
  2480. ░░║ SEVAL                                            ║░░░░░░░░░░░░░░░░░░░░░░░░░░
  2481. ░░║ USERLIST                                         ║░░░░░░░░░░░░░░░░░░░░░░░░░░
  2482. ░░║                                                  ║░░░░░░░░░░░░░░░░░░░░░░░░░░
  2483. ░░║                                                  ║░░░░░░░░░░░░░░░░░░░░░░░░░░
  2484. ░░╚══════════════════════════════════════════════════░░░░░░░░░░░░░░░░░░░░░░░░░░
  2485. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2486. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2487. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2488. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2489. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2490. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2491. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2492. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2493. ▓ Up/Down, PgUp/PgDn to Move Pointer ▓ ENTER to Select ▓ ESC to Exit ▓
  2494.  
  2495.  
  2496.   You can only edit the fields for one database at a time.
  2497.   Select "*MEMVAR*" to edit the memory variables for your
  2498.   application, these are treated very much like a separate
  2499.   database in the Builder data dictionary.
  2500.  
  2501.   Note that you cannot add fields to a data dictionary
  2502.   database field list, you can only add to the "*MEMVAR*"
  2503.   (memory variable) list.  In order to make database field
  2504.   changes in the data dictionary, one of the automatic updates
  2505.   must be selected.
  2506.  
  2507.   Before data dictionary items can be edited, you must first
  2508.   intialize the list using one of the two "Update" data
  2509.   dictionary menu options.
  2510.  
  2511.   Once you select a database (or "*MEMVAR*") the main data
  2512.   dictionary edit window appears and looks like the following
  2513.   screen sample.
  2514.                                                 Page: 56
  2515.  
  2516.  
  2517.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2518. ║                 ╔═════════════════════════╗are                               ║
  2519. ║                 ║ Edit Databases USEd     ║plication                         ║
  2520. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2521. ║       █Mainte╔═ D-DICT FIELDS ══════╡Record: 1 of 0╞════╗   Setup            ║
  2522. ╚══════════════║ Field Name  Field Type  Length  Decimal  ║═╗══════════════════╝
  2523. ░░░░░░░░░░░░░░░║ ██████████      █      ███0        █0    ║ ║░░░░░░░░░░░░░░░░░░░
  2524. ░░╔════════════║                                          ║ ║░░░░░░░░░░░░░░░░░░░
  2525. ░░║ *MEMVAR* Sy║ FIELD DEFAULT VALUES:                    ║ ║░░░░░░░░░░░░░░░░░░░
  2526. ░░║ GEVAL      ║ Display Text ███████████████████████████ ║ ║░░░░░░░░░░░░░░░░░░░
  2527. ░░║ PASSWORD   ║      Picture ███████████████████████████ ║═╝░░░░░░░░░░░░░░░░░░░
  2528. ░░║ SEVAL      ║                                          ║░░░░░░░░░░░░░░░░░░░░░
  2529. ░░║ USERLIST   ║ Report Column Heading                    ║░░░░░░░░░░░░░░░░░░░░░
  2530. ░░║            ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2531. ░░║            ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2532. ░░╚════════════║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2533. ░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2534. ░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░░░░░░░░░░
  2535. ░░░░░░░░░░░░░░░║ Description                              ║░░░░░░░░░░░░░░░░░░░░░
  2536. ░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░░░░░░░░░░
  2537. ░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2538. ░░░░░░░░░░░░░░░╚═╡F10-Additional Items╞═══════════════════╝░░░░░░░░░░░░░░░░░░░░░
  2539. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2540. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2541. ▓ Enter New Information ▓ PgDn-Save ▓ ESC to Exit ▓
  2542.  
  2543.  
  2544.   You will have four defaults available to enter for each data
  2545.   dictionary item.  Four additional fields must be entered for
  2546.   memory variables in order to describe the variable's name,
  2547.   data type, and length.
  2548.  
  2549.   Each of the four defaults that can be entered on this screen
  2550.   are optional.
  2551.  
  2552.   Display Text / Picture - These will be used as the default
  2553.   values when imported into a Builder File Maintenance or
  2554.   Dialog window.
  2555.  
  2556.   Report Column Heading -  Will be utilized when you use the
  2557.   field exclusively as a BREPORT column entry.  In other
  2558.   words, you enter ALIAS->FIELD_NAME as the BREPORT column
  2559.   data, and the column heading will be entered automatically.
  2560.   Note that this only applies to "COLUMN" type reports when
  2561.   using BREPORT!
  2562.  
  2563.   Description - This is used on the data dictionary reports.
  2564.   This is a useful documentation tool only and is not used in
  2565.   any other way.
  2566.  
  2567.   The four fields on the top of this screen window can only be
  2568.   modified when adding or editing "*MEMVAR*"s.  If you need to
  2569.   make changes to a database field's data type or length, use
  2570.   the "Update from "Databases USEd"" Data Dictionary menu
  2571.   option.
  2572.  
  2573.   The first three of these are required:
  2574.  
  2575.   Field Name -  is a one to ten digit memory variable name,
  2576.   use Clipper variable naming requirements when entering this
  2577.                                            Page: 57
  2578.  
  2579.   value.
  2580.  
  2581.   Field Type - can be "C"-Character, "N"-Numeric, "D"-Date,
  2582.   "M"-Memo, or "L"-Logical only.  The same variable types as
  2583.   available in the Clipper programming language.  (no surprise
  2584.   here)
  2585.  
  2586.   Length - is the length of the variable, the allowable values
  2587.   vary for the different data types.  Character variables can
  2588.   be up to 999 characters in length.  Numerics can be between
  2589.   20 and 3.  Date, Memo, and Logicals are fixed and entered
  2590.   for you (8, 10, and 1).
  2591.  
  2592.   Decimal - can only be used when the data type is Numeric and
  2593.   determines the number of decimal places for the numeric
  2594.   memory variable.
  2595.  
  2596.   Use the Page-Down key to save each screen entered.  Use
  2597.   Page-Up and Page-Down to scroll to the previous and next
  2598.   records in the data dictionary.  Pressing the F10 key will
  2599.   present a menu of "Additional Items" for further construct
  2600.   ing your data dictionary items.
  2601.                                                 Page: 58
  2602.   FILES - DATA DICTIONARY - Edit Data Dictionary - Additional Items
  2603.  
  2604.   The "Additional Items" menu has five options and looks like
  2605.   the following screen sampel.
  2606.  
  2607.  
  2608.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2609. ║                 ╔═════════════════════════╗are                               ║
  2610. ║                 ║ Edit Databases USEd     ║plication                         ║
  2611. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2612. ║       █Mainte╔═ D-DICT FIELDS ══════╡Record: 1 of 0╞════╗   Setup            ║
  2613. ╚══════════════║ Field Name  Field Type  Length  Decimal  ║═╗══════════════════╝
  2614. ░░░░░░░░░░░░░░░║ ██████████       █       ██0       █0    ║ ║░░░░░░░░░░░░░░░░░░░
  2615. ░░╔════════════║                                          ║ ║░░░░░░░░░░░░░░░░░░░
  2616. ░░║█*MEMVAR*█Sy║ FIELD DEFAULT VALUES:                    ║ ║░░░░░░░░░░░░░░░░░░░
  2617. ░░║ GEVAL      ║ Display Text ███████████████████████████ ║ ║░░░░░░░░░░░░░░░░░░░
  2618. ░░║ PASSWORD   ║      Picture ███████████████████████████ ║═╝░░░░░░░░░░░░░░░░░░░
  2619. ░░║ SEVAL      ║                                          ║░░░░░░░░░░░░░░░░░░░░░
  2620. ░░║ USERLIST   ║ Report Column Heading                    ║░░░░░░░░░░░░░░░░░░░░░
  2621. ░░║            ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2622. ░░║            ║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2623. ░░╚════════════║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2624. ░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2625. ░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░░░░░░░░░░
  2626. ░░░░░░░░░░░░░░░║ Description                              ║░░░░░░░░░░░░░░░░░░░░░
  2627. ░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  2628. ░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░░░
  2629. ░░░░░░░░░░░░░░░║█Valid█Edit-Help File-Desc Copy-In Delete ║░░░░░░░░░░░░░░░░░░░░░
  2630. ░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░
  2631. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2632. ▓ Up/Down Left/Right-Move Pointer ▓ PgUp/PgDn-Prev/Next ▓ ENTER-Select ▓ ESC-Exi
  2633.  
  2634.  
  2635.   <Body text
  2636.  
  2637.  
  2638.   Valid - This allows you to attach a default VALID to the currently displayed field.
  2639.   Valids attached here will be copied to Builder Dialog and File Maintenance
  2640.   windows if this field is selected during an import from the data dictionary.
  2641.  
  2642.   Edit-Help - This option will allow you to attach a default detail help screen to the
  2643.   currently displayed field.  Help screens attached here will be copied to Builder
  2644.   Dialog and File Maintenance windows if this field is selected during an import
  2645.   from the data dictionary.
  2646.  
  2647.   File-Desc - This simply allows you to edit the long description for the database in
  2648.   which the currently displayed field resides.  Entering all the long descriptions
  2649.   makes documenting and pick list selections easier to understand.  Entry is
  2650.   optional.
  2651.  
  2652.   Copy-In - You can use this selection to update a single data dictionary item from
  2653.   a Builder window element.
  2654.  
  2655.   Delete - This menu option will delete ALL the data dictionary items for the
  2656.   selected database.  There is a confirmation prompt before the deletion is
  2657.   performed.
  2658.  
  2659.   IMPORTANT NOTE:  The "Valid" and "Edit-Help" menu options in the data
  2660.   dictionary function exactly the same as their counterparts when editing Builder
  2661.   screen elements.  See the documentation on these items under the table of
  2662.   contents heading "Dialog/File Maintenance 'Additional Items' Menu" for more
  2663.  
  2664.                                            Page: 59
  2665.  
  2666.   information.
  2667.  
  2668.   More Details the Remaining Menu Options:
  2669.  
  2670.   Selecting "Copy-In" will present a picklist of all the dialog and file maintenance
  2671.   screen GETs.  You will be able to scroll the picklist to any field.  Pressing
  2672.   ENTER will select the highlighted field, or press ESC to abort the "Copy-In".
  2673.  
  2674.   The "Copy-In" option will behave differently when used in the "*MEMVAR*"
  2675.   fields than fields for your system databases.
  2676.  
  2677.   If a field is selected to be copied and you are editing the "*MEMVAR*" fields,
  2678.   the memory variables will be searched and if an exact field name match is found,
  2679.   the matching field will be updated.  If a match is not found, a new memory
  2680.   variable data dictionary entry will be added.  Only blank and non-existent data
  2681.   will be updated, no overwrites will be done when using "Copy-In".
  2682.  
  2683.   If you were editing a system database when you select a "Copy-In" field, only
  2684.   blank or non-existent data dictionary fields on the current item will be updated.
  2685.   Copy-In will attempt to update the "Display Text" (if blank), "Picture" (if blank),
  2686.   "Valids" (non-existents will be added), and "Help-Text" (if non-existent).
  2687.   FILES - DATA DICTIONARY - Update from Another Dictionary
  2688.  
  2689.   You can initialize or update your data dictionary from another Builder data
  2690.   dictionary located on another disk or in another subdirectory by using this menu
  2691.   option.
  2692.  
  2693.   This type of update is a DESTRUCTIVE update, in other words, it will overwrite
  2694.   your existing data dictionary fields.  Doing this here has an advantage when
  2695.   several systems share common data.  If one system's data dictionary is changed,
  2696.   each following system can update from the source system.  This is also dangerous,
  2697.   so be careful!
  2698.  
  2699.   In order to perform the update, you first must enter the drive and subdirectory
  2700.   name where another Builder data dictionary resides.  Enter this into the field in
  2701.   the window displayed when the "Update from Andother Dictionary" menu option
  2702.   is selected.  This look like the following screen.
  2703.                                                 Page: 60
  2704.  
  2705.  
  2706.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2707. ║                 ╔═════════════════════════╗are                               ║
  2708. ║                 ║ Edit Databases USEd     ║plication                         ║
  2709. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2710. ║       █Maintenan║█Data Dictionary█████████║                 Setup            ║
  2711. ╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
  2712. ░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary           ║░░░░░░░░░░░░░░░░░░░
  2713. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Update█from█Another█Dictionary█║░░░░░░░░░░░░░░░░░░░
  2714. ╔══════════════════════════════════════════════════════════════════╗░░░░░░░░░░░░
  2715. ║ Enter the drive and pathname for the source data dictionary and  ║░░░░░░░░░░░░
  2716. ║ database/index list.  You will be presented with a list of files ║░░░░░░░░░░░░
  2717. ║ in that dictionary.  Tag all the files whose dictionary data you ║░░░░░░░░░░░░
  2718. ║ want copied into this system.                                    ║░░░░░░░░░░░░
  2719. ║                                                                  ║░░░░░░░░░░░░
  2720. ║ Pathname \CLIPPER\BUILDER2██████████████████████████████████████ ║░░░░░░░░░░░░
  2721. ║                                                                  ║░░░░░░░░░░░░
  2722. ╚══════════════════════════════════════════════════════════════════╝░░░░░░░░░░░░
  2723. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2724. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2725. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2726. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2727. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2728. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2729. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2730. ▓ Enter Path of Source Directory ▓ ESC-Exit ▓
  2731.  
  2732.  
  2733.   Once this is done successfully, you will be presented with a picklist of the
  2734.   databases and database long descriptions that are in the source dictionary.  Press
  2735.   "T" to tag each database whose fields you would like copied/changed in the data
  2736.   dictionary for the current system, pressing "T" a second time will un-tag a tagged
  2737.   selection.  Use Up/Down/PgUp/PgDn to move the pointer to the desired
  2738.   selection.  You may also press "A" to tag the whole list, or "U" to un-tag the
  2739.   whole list.  Press ESC when you are ready to start the update.  This screen should
  2740.   look like the following sample.
  2741.                                                 Page: 61
  2742.  
  2743.  
  2744.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2745. ║                 ╔═════════════════════════╗are                               ║
  2746. ║                 ║ Edit Databases USEd     ║plication                         ║
  2747. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2748. ║       █Maintenan║█Data█Dictionary█████████║                 Setup            ║
  2749. ╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
  2750. ░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary           ║░░░░░░░░░░░░░░░░░░░
  2751. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Update█from█Another█Dictionary█║░░░░░░░░░░░░░░░░░░░
  2752. ╔══════════════════════════════════════════════════════════════════╗░░░░░░░░░░░░
  2753. ║ Enter the drive and pathname for the source data dictionary and  ║░░░░░░░░░░░░
  2754. ║ database/index list.  You will be presented with a list of files ║░░░░░░░░░░░░
  2755. ║ in that dictionary.  Tag all the files whose dictionary data you ║░░░░░░░░░░░░
  2756. ║ want copied into this system.                                    ║░░░░░░░░░░░░
  2757. ║                                                                  ║░░░░░░░░░░░░
  2758. ╔═══════════════════════════════════════════════════╗█████████████ ║░░░░░░░░░░░░
  2759. ║█*MEMVAR*-System█Memory█Variables██████████████████║              ║░░░░░░░░░░░░
  2760. ║ SHOPMAST-Shop or Store Master File                ║══════════════╝░░░░░░░░░░░░
  2761. ║ LOTMAST -Lot or Package Control File              ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2762. ║ CPNMAST -Master Coupon Inventory File             ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2763. ║ BTCHMAST-Batch Control Master File                ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2764. ║ ORDMAST -Coupon Order Master File                 ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2765. ║ RDMMAST -Redeemed Coupons Master File             ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2766. ║ RTRNMAST-Master File of Unsold Booklets Returned  ║░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2767. ╚═══════════════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2768. ▓  PgUp/PgDn-Scroll ▓ T-Tag Toggle ▓ A/U-Tag/Untag All ▓ ESC-Exit ▓
  2769.  
  2770.  
  2771.   If you have selected update items, you will be given a "Ready to Start"
  2772.   confirmation prompt.  Pressing "Y" will begin the update process.  This process
  2773.   can take a long time, so be patient.
  2774.  
  2775.   When it is complete, the data dictionary in the current system will contain an
  2776.   exact copy of the every item for the databases selected.
  2777.  
  2778.   Again be WARNED, this is a DESTRUCTIVE copy much like a DOS copy.  If
  2779.   you copy the dictionary items from another dictionary on top of the current one,
  2780.   any customizations you wish to retain WILL BE LOST.
  2781.   FILES - DATA DICTIONARY - Update from "Databases USEd"
  2782.  
  2783.   Selecting 'Update from "Databases USEd" from the Data Dictionary menu will
  2784.   present a screen similar to the following.
  2785.                                                 Page: 62
  2786.  
  2787.  
  2788.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2789. ║                 ╔═════════════════════════╗are                               ║
  2790. ║                 ║ Edit Databases USEd     ║plication                         ║
  2791. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2792. ║       █Maintenan║█Data█Dictionary█████████║                 Setup            ║
  2793. ╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
  2794. ░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary           ║░░░░░░░░░░░░░░░░░░░
  2795. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from Another Dictionary ║░░░░░░░░░░░░░░░░░░░
  2796. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Update█from█"Databases USEd"███║░░░░░░░░░░░░░░░░░░░
  2797. ╔═══════════════════════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░
  2798. ║ Tag databases in this list to update the data dictionary. ║░░░░░░░░░░░░░░░░░░░
  2799. ║ Structure differences between tagged databases and the    ║░░░░░░░░░░░░░░░░░░░
  2800. ║ data dictionary will be corrected.                        ║░░░░░░░░░░░░░░░░░░░
  2801. ╔══════════╗                                                ║░░░░░░░░░░░░░░░░░░░
  2802. ║█SEVAL████║════════════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░
  2803. ║ GEVAL    ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2804. ║ ENVIRON  ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2805. ║ BDCTFLD  ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2806. ║ USERLIST ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2807. ║ PASSWORD ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2808. ║          ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2809. ║          ║░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2810. ╚══════════╝░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2811. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2812. ▓  PgUp/PgDn-Scroll ▓ T-Tag Toggle ▓ A/U-Tag/Untag All ▓ ESC-Exit ▓
  2813.  
  2814.  
  2815.   This update option allows you to initialize your dictionary from the fields in the
  2816.   databases you will be using in your application.  This can also be used to update
  2817.   the dictionary if you have modified any database structures.
  2818.  
  2819.   Once selected, you will be presented with a list of database names located in the
  2820.   "Databases USEd" list (See the table of contents heading "File/Index List" for
  2821.   more information)
  2822.  
  2823.   Move the pointer through the list using the Up/Down/PgUp/PgDn keys.  Select a
  2824.   database by pressing "T" to tag it, pressing "T" on a tagged name will un-tag it.
  2825.   Press "A" to tag the whole list, or "U" to un-tag the whole list.
  2826.  
  2827.   Press ESC when finished tagging and a "Ready to Start" confirmation prompt is
  2828.   presented.  Press "Y" at the confirmation to begin the update.
  2829.  
  2830.   If a file name selected is not already in the data dictionary, it will be added.  Field
  2831.   names not in the dictionary for a database will be added.
  2832.  
  2833.   The field name, data type, field length, and decimal length will be changed, if
  2834.   necessary, to reflect the current database structure.
  2835.  
  2836.   If a field or fields have been deleted from a database structure, those fields will
  2837.   be LEFT IN THE DATA DICTIONARY.  You will need to delete an un-wanted
  2838.   field from the data dictionary by hand!
  2839.   FILES - DATA DICTIONARY - Data Dictionary Reports
  2840.  
  2841.                                            Page: 63
  2842.  
  2843.   Selecting this option from the Data Dictionary menu will present the following
  2844.   menu.
  2845.  
  2846.  
  2847.   Change Window  Add Window █Files█ Options  Colors  Mode  About  Exit
  2848. ║                 ╔═════════════════════════╗are                               ║
  2849. ║                 ║ Edit Databases USEd     ║plication                         ║
  2850. ╔═════════════════║ Modify/Create Structure ║══════════════════════════════════╗
  2851. ║       █Maintenan║█Data█Dictionary█████████║                 Setup            ║
  2852. ╚═════════════════║ Generat╔════════════════════════════════╗══════════════════╝
  2853. ░░░░░░░░░░░░░░░░░░╚════════║ Edit Data Dictionary           ║░░░░░░░░░░░░░░░░░░░
  2854. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from Another Dictionary ║░░░░░░░░░░░░░░░░░░░
  2855. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Update from "Databases USEd"   ║░░░░░░░░░░░░░░░░░░░
  2856. ░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Data█Dictionary█Reports████████║░░░░░░░░░░░░░░░░░░░
  2857. ░░░░░░░░░░░░░░░░░░░░░░░░░░░╚════════════╔═════════════════════════╗░░░░░░░░░░░░░
  2858. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║█Alpha█by█Database/Field█║░░░░░░░░░░░░░
  2859. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░║ Alpha by Field Name     ║░░░░░░░░░░░░░
  2860. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╚═════════════════════════╝░░░░░░░░░░░░░
  2861. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2862. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2863. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2864. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2865. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2866. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2867. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2868. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2869. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2870. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2871. ▓ Up/Down, Left/Right-Move Pointer ▓ ENTER-Select▓ ESC-Exit ▓
  2872.  
  2873.  
  2874.   There are two data dictionary reports available:
  2875.  
  2876.   "Alpha by Database/Field"
  2877.   "Alpha by Field Name"
  2878.  
  2879.   Both reports have exactly identical opening pages and columns (except the second
  2880.   report has an additional "Database" column) .  The difference is that the report by
  2881.   "Database/Field" prints one page per database, with the database fields sorted
  2882.   alphabetically on the page. The "Alpha by Field Name" report prints a continuous
  2883.   list of ALL database fields sorted alphabetically.
  2884.  
  2885.   The opening page contains help in understanding the rightmost report column.
  2886.   This column contains codes that indicate what information is attached to a data
  2887.   dictionary field.
  2888.  
  2889.   The report columns are:
  2890.  
  2891.   Field Name - The name of the database field as it appears in the database
  2892.   structure.  Or as entered if it is a memory variable.
  2893.  
  2894.   Field Type-Len.Dec - A one character code indicating the data type of the field;
  2895.   followed by a dash, the field length, a period (if numeric) and the decimal length.
  2896.                                            Page: 64
  2897.  
  2898.   Data types can be "C"-Character, "N"-Numeric, "D"-Date, "M"-Memo, or "L"-
  2899.   Logical.
  2900.  
  2901.   Field Description"- The first 40 characters of the field long description entered
  2902.   into the data dictionary.
  2903.  
  2904.   Database - This column is printed on the "by Field Name" report only and
  2905.   contains the name of the database where the field is located.
  2906.  
  2907.   Items Attached - A 10 position column that indicates which VALIDs (if any) are
  2908.   attached to the database field.  If a help screen is attached, and if a report column
  2909.   is entered.
  2910.  
  2911.   When a data dictionary report menu option is selected, another window is
  2912.   presented where you may enter the output device or filename to send the report.
  2913.   FILES - GENERATE SOURCE CODE
  2914.  
  2915.   To create Clipper source code select the "Generate Source Code" option from the
  2916.   "Files" submenu.
  2917.  
  2918.   You will be prompted "Ready to Generate Source? (Y/N)" press Y for yes or
  2919.   press N for no (ESC for No will also work).  If the file to be created already
  2920.   exists, you will be prompted "File Exists, Overwrite? (Y/N)" - answer yes to
  2921.   generate source.  Answer no to abandon this operation.
  2922.  
  2923.   Since this product is very easy to use, the source created is less what you would
  2924.   have written and more what I would have written.  If you can deal with modifying
  2925.   my code you will like and enjoy the speed with which you can create applications
  2926.   with BUILDER.  On the other hand, if you are a more free spirit and just have to
  2927.   use your own logic and algorithms you may not like the results. That, however you
  2928.   may view it, is the trade-off of making this a very easy to use product.
  2929.   COLORS
  2930.  
  2931.   Since there are so many colors to choose from, you will first be presented with a
  2932.   menu when the "Colors" Builder main menu option is selected.  Choose between
  2933.   "Main Colors" and "TBrowse Colors".  The main colors allow modification to most
  2934.   Builder application colors and TBrowse colors allow changing all the colors that
  2935.   pertain to a TBrowse window.
  2936.  
  2937.   This will present one of the color selection windows.  The left side of  a color
  2938.   selection window will be a menu from which you can select each color variable for
  2939.   modification.  Use the up and down arrows and press ENTER to select the color
  2940.   to change.
  2941.  
  2942.  
  2943.                                            Page: 65
  2944.  
  2945.   After pressing ENTER on a color option a small display window will be presented
  2946.   under the color menu.  See the sample screen on the next page.  The display
  2947.   window will show the current SET COLOR TO scheme and whether you are
  2948.   currently changing the foreground or background color.  Press the up and down
  2949.   arrow keys to increment and decrement the color.  Press the left or right arrow
  2950.   keys to toggle between  changing the foreground and background color.  If you
  2951.   are changing the foreground color press the TAB key to toggle between a high
  2952.   and low intensity color.  The colors you are changing will display in the right side
  2953.   of the color modification window, which is a small mock up of the application
  2954.   screen, as the changes are made.
  2955.  
  2956.   Press ESC to exit the "Colors" menu option.  If any changes were made a prompt
  2957.   will display in the area under the color menu asking if you want to save the
  2958.   changes.  Press Y to save the Changes or N to abort your changes.
  2959.  
  2960.   If you save color changes, exit to DOS an re-enter the BUILDER program to see
  2961.   your new color selections incorporated into your prototype.  These colors will also
  2962.   be used in your application program.
  2963.                                                 Page: 66
  2964.   MODE
  2965.  
  2966.   Select the "Mode" main menu option to set the application in
  2967.   one of two modes, "Development" or "Prototype".  The default
  2968.   mode is "Development", when set and you press ENTER on a
  2969.   non-"File Maintenance" window in the application prototype
  2970.   the BUILDER "Add Window " menu will be presented.  However,
  2971.   if you set the mode to "Prototype" pressing ENTER on a non-
  2972.   "File Maintenance" window will display a window in the
  2973.   center of the screen which reads "This Option Not
  2974.   Installed".  The "Prototype" mode is useful when showing the
  2975.   proposed application to a user, in which case you wouldn't
  2976.   want the BUILDER menu popping up accidentally.
  2977.  
  2978.   To set the mode, select "Mode" from the main BUILDER menu.
  2979.   Press the right or left arrow keys to toggle between
  2980.   "Development" and "Prototype", press ENTER to set the mode
  2981.   or ESC to abort this operation.
  2982.                                                 Page: 67
  2983.   ADDITIONAL ITEMS MENU
  2984.  
  2985.   While Adding or Editing detail items for a "Dialog Box" or
  2986.   "File Maintenance" window the bottom border of the BUILDER
  2987.   edit window has the message "F10 - Additional Items".
  2988.   Pressing the F10 key will present the Additional Items Menu,
  2989.   this menu has four selections:
  2990.  
  2991.   Valid, Append, Edit Help, and Delete.
  2992.  
  2993.   This menu will appear at the bottom edge of the screen
  2994.   window from which it is selected and looks like the
  2995.   following sample screen.
  2996.  
  2997.  
  2998.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  2999. ║              ╔════════════╗    Aeolus Software                               ║
  3000. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  3001. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  3002. ║        █Maint║█Dialog█████║         Process                 Reports          ║
  3003. ╚══════════════║ TB╔══════════════════════════════════════════════╗════════════╝
  3004. ░░░░░░░░░░░░░░░║ Fi║      Comment: ██████████████████████████████ ║░░░░░░░░░░░░░
  3005. ░░░░░░░░░░░░░░░║ Re║ Mes╔═ DIALOG ═════════════╡Record: 1 of 0╞════╗░░░░░░░░░░░░
  3006. ░░░░░░░░░░░░░░░║ Ha║    ║ Display Text:                            ║░░░░░░░░░░░░
  3007. ░░░░░░░░░░░░░░░║ Co╚════║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  3008. ░░░░░░░░░░░░░░░╚════════║ Enhanced Color?: N (Y/N)                 ║░░░░░░░░░░░░
  3009. ░░░░░░░░░░░░░░░░░░░░░░░░║                                          ║░░░░░░░░░░░░
  3010. ░░░░░░░░░░░░░░░░░░░░░░░░║ GET var: ██████████  Length: ██0         ║░░░░░░░░░░░░
  3011. ░░░░░░░░░░░░░░░░░░░░░░░░║ Picture:                                 ║░░░░░░░░░░░░
  3012. ░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  3013. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize?: N (Y/N)                     ║░░░░░░░░░░░░
  3014. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize to:                           ║░░░░░░░░░░░░
  3015. ░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  3016. ░░░░░░░░░░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░
  3017. ░░░░░░░░░░░░░░░░░░░░░░░░║    █Valid█ Append  Edit Help  Delete     ║░░░░░░░░░░░░
  3018. ░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░
  3019. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3020. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3021. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3022. ▓ Up/Down Left/Right-Move Pointer ▓ PgUp/PgDn-Prev/Next ▓ ENTER-Select ▓ ESC-Exi
  3023.  
  3024.  
  3025.   In addition to using the arrow keys to move the menu pointer
  3026.   the Page Up and Page Down keys will skip backward and
  3027.   forward one screen element.
  3028.  
  3029.   Valid - allows you to attach a VALID to the currently
  3030.   displayed GET variable.  See your Clipper documentation on
  3031.   the @...GET command for information on the VALID clause.
  3032.  
  3033.   Append - allows you to import the fields from a .DBF file or
  3034.   the data dictionary to create file maintenance or dialog
  3035.   window elements.
  3036.  
  3037.   Edit Help - make changes to the Help System screen for the
  3038.   current GET field.
  3039.  
  3040.   Delete - Delete ALL elements for the current window.
  3041.                                                 Page: 68
  3042.   ADDITIONAL ITEMS MENU - VALID
  3043.  
  3044.   If the "Valid" option is selected from the "Additional
  3045.   Items" menu another menu is presented containing all the
  3046.   BUILDERable VALIDS for the GET currently being edited.  The
  3047.   GET variable name will be displayed on the top border of
  3048.   this menu and the PgUp/PgDn keys will allow scrolling to the
  3049.   previous and next window element.
  3050.  
  3051.   This menu looks like the following screen sample.
  3052.  
  3053.  
  3054.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  3055. ║              ╔════════════╗    Aeolus Software                               ║
  3056. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  3057. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  3058. ║        █Maint║█Dialog█████║         Process            ╔════════╡TEST╞═══════╗
  3059. ╚══════════════║ TB╔═════════════════════════════════════║█Pick List Validate██║
  3060. ░░░░░░░░░░░░░░░║ Fi║      Comment: ██████████████████████║ Check Character(s)  ║
  3061. ░░░░░░░░░░░░░░░║ Re║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required      ║
  3062. ░░░░░░░░░░░░░░░║ Ha║    ║ Display Text:                  ║ Duplicate Check     ║
  3063. ░░░░░░░░░░░░░░░║ Co╚════║ ███████████████████████████████║ In a File Validate  ║
  3064. ░░░░░░░░░░░░░░░╚════════║ Enhanced Color?: N (Y/N)       ║ Generic Valid       ║
  3065. ░░░░░░░░░░░░░░░░░░░░░░░░║                                ║ Right Justify Field ║
  3066. ░░░░░░░░░░░░░░░░░░░░░░░░║ GET var: TEST██████  Length: ██║ Comment Only        ║
  3067. ░░░░░░░░░░░░░░░░░░░░░░░░║ Picture:                       ╚═════════════════════╝
  3068. ░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  3069. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize?: N (Y/N)                     ║░░░░░░░░░░░░
  3070. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initialize to:                           ║░░░░░░░░░░░░
  3071. ░░░░░░░░░░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░
  3072. ░░░░░░░░░░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░
  3073. ░░░░░░░░░░░░░░░░░░░░░░░░║    █Valid█ Append  Edit Help  Delete     ║░░░░░░░░░░░░
  3074. ░░░░░░░░░░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░
  3075. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3076. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3077. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3078. ▓ Up/Down Left/Right ▓ ENTER-Select ▓ ESC-Exit ▓
  3079.  
  3080.  
  3081.   Select the type of valid you would like to attach to the
  3082.   currently displayed GET variable using the up and down arrow
  3083.   keys.  Press ENTER on that selection to display the valid
  3084.   entry dialog.
  3085.  
  3086.   If a GET already has a valid attached, the GET variable name
  3087.   will be surrounded by small arrow indicators.  If the valid
  3088.   menu is displayed the selected valid(s) will have arrow
  3089.   indicators displayed on either side of the menu prompt and
  3090.   the menu highlight bar will be positioned at the first
  3091.   selected valid.
  3092.  
  3093.   Note that you may attach more than one valid to a GET
  3094.   variable if needed.  However, in doing so it is very easy to
  3095.   go beyond the character limit for a single line of code when
  3096.   the code is generated.  This may require some experimenta
  3097.   tion and/or adjustments to the source code.
  3098.  
  3099.   Also, some valids do not work well together.  As a general
  3100.   rule, do not attach more than one valid to a GET that
  3101.   displays an error message.
  3102.  
  3103.  
  3104.                                            Page: 69
  3105.  
  3106.   To add or change a valid for the currently displayed GET,
  3107.   simply select it from the menu.  A screen is presented blank
  3108.   if a preexisting valid is not found, or filled in if valid
  3109.   data is found.  Cursoring past the last field in the entry
  3110.   window and answering Y (Yes) to the "Save This? (Y/N)"
  3111.   prompt will save the valid.  Press the ESC key to abandon
  3112.   the changes.  Pressing the Ctrl+PgDn key combination while
  3113.   editing a previously saved valid will present a prompt
  3114.   asking your confirmation to delete that valid.
  3115.                                                 Page: 70
  3116.   ADDITIONAL ITEMS MENU - VALID - Pick List Validate
  3117.  
  3118.   Selecting the "Pick List Validate" valid for a GET variable
  3119.   will present a dialog window with a short description of
  3120.   what this valid does and a number of entry fields needed to
  3121.   create the valid.  Following is a sample screen.
  3122.  
  3123.   The "Pick List Validate" valid will create the source code
  3124.   needed to make an indexed look up on a database of the
  3125.   keyboard entry into the GET field.  If the value keyed into
  3126.   the GET field does not generate a FOUND() equal to .T.
  3127.   (true), then a pick list is given to the user of the nearest
  3128.   records in the database to what they entered.  The user may
  3129.   PgUp/PgDn/Up Arrow/Down Arrow to the desired record.  If the
  3130.   ENTER key is pressed the field data from the pick list
  3131.   selection is entered into the GET field.  If the ESC key is
  3132.   pressed the pick list disappears and no action is taken.
  3133.  
  3134.   The following screen shows the "Pick List Validate" entry
  3135.   dialog:
  3136.  
  3137.  
  3138.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  3139. ╔═══════════════╗                Aeolus Software                               ║
  3140. ║ Move Window   ║         Test Builder 2.2 Application                         ║
  3141. ║ Size Window   ║══════════════════════════════════════════════════════════════╗
  3142. ║ Move Elements ║ance█                Process   ╔════════╡TEST╞═══════╗        ║
  3143. ║█Edit Ele╔═════════════════════════════════════║ Pick List Validate  ║════════╝
  3144. ╚═════════║      Comme╔═══════════════════════════════════════════╗)  ║░░░░░░░░░
  3145. ░░░░░░░░░░║ Mes╔═ DIAL║ If the data entered into the GET does not ║   ║░░░░░░░░░
  3146. ░░░░░░░░░░║    ║ Displ║ exactly match a SEEK into another file,   ║   ║░░░░░░░░░
  3147. ░░░░░░░░░░╚════║ █████║ have user select from a Pick List.        ║e  ║░░░░░░░░░
  3148. ░░░░░░░░░░░░░░░║ Enhan║                                           ║   ║░░░░░░░░░
  3149. ░░░░░░░░░░░░░░░║      ║    File Alias: ████████                   ║ld ║░░░░░░░░░
  3150. ░░░░░░░░░░░░░░░║ GET v║  Field Number: ██0                        ║   ║░░░░░░░░░
  3151. ░░░░░░░░░░░░░░░║ Pictu║   Index Order: █0                         ║═══╝░░░░░░░░░
  3152. ░░░░░░░░░░░░░░░║ █████║ QWERTY Scroll? █ (Y/N)                    ║░░░░░░░░░░░░░
  3153. ░░░░░░░░░░░░░░░║ Initi║ Display Expression (evaluated as a macro) ║░░░░░░░░░░░░░
  3154. ░░░░░░░░░░░░░░░║ Initi║ █████████████████████████████████████████ ║░░░░░░░░░░░░░
  3155. ░░░░░░░░░░░░░░░║ █████║    Bounded By: ██████████ (fieldname)     ║░░░░░░░░░░░░░
  3156. ░░░░░░░░░░░░░░░╔══════║      Required? █ (Y/N)                    ║░░░░░░░░░░░░░
  3157. ░░░░░░░░░░░░░░░║    █V║                                           ║░░░░░░░░░░░░░
  3158. ░░░░░░░░░░░░░░░╚══════╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
  3159. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3160. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3161. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3162. ▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
  3163.  
  3164.  
  3165.   Note that before the "Pick List Validate" can be used in
  3166.   your program the database will need to be created and opened
  3167.   as will the index files.  You may also want to create a file
  3168.   maintenance routine for the look-up database.  See the "Edit
  3169.   Databases USEd" and "Modify Create Structure" under the
  3170.   "Files" main menu option for more information on creating
  3171.   and opening database and index files.
  3172.  
  3173.   There are seven fields to be filled in for BUILDER to have
  3174.   the information to create the "Pick List Validate", They
  3175.   are:
  3176.  
  3177.  
  3178.                                            Page: 71
  3179.  
  3180.   File Alias: - This field is required but entry is not
  3181.   checked.  If you try to bypass this field a list of .DBFs in
  3182.   the current directory will be presented for selection.
  3183.   Enter the alias name of the database with which to verify
  3184.   the GET entry.
  3185.  
  3186.   Field Number: - Enter the ordinal field position in the
  3187.   look-up database for the data to be placed in the GET field.
  3188.   This field is required to be greater than zero.  You must be
  3189.   sure the field types and sizes in the look-up database and
  3190.   your GET field match.  See the Clipper documentation on the
  3191.   FCOUNT(), FIELD() and FIELDNAME() functions for further
  3192.   information on ordinal field positions.
  3193.  
  3194.   Index Order: - This field is also required.  Enter the index
  3195.   order number to use to do an indexed search for the GET
  3196.   input.  Assistance with entry into this field is available
  3197.   if there are index entries for the database entered for the
  3198.   "File Alias:" field.  The text "F10-Index List" will be
  3199.   displayed on the bottom of the window when a list is
  3200.   available.
  3201.  
  3202.   QWERTY Scroll: - Enter either Y-Yes or N-No.  If set to Yes
  3203.   a 'field' will display on top of the pick list allowing the
  3204.   user to enter alphabetic data as search criteria.  QWERTY
  3205.   Scroll is useful when traversing very large amounts of data.
  3206.  
  3207.   Display Expression: - Enter a display expression using
  3208.   fields from the look-up database and any database(s) related
  3209.   to it.  The expression entered here, when evaluated as a
  3210.   macro, MUST evaluate to a character expression.  This field
  3211.   has a maximum size of 150 characters, the field will scroll
  3212.   if you use more room than is available on the screen.
  3213.  
  3214.   Bounded By: - If you would like to restrict access to a
  3215.   subset of the database data, enter the look-up database
  3216.   field name here.  This field  must be a part of the index
  3217.   key preceding the field matching the GET field.  The user
  3218.   will only see the part of the look-up database where this
  3219.   field remains exactly the same as when the pick list was
  3220.   initially presented.  If used you will need to make changes
  3221.   to the Key Prefix Parameter for the call to the PCKVLD()
  3222.   function in the generated source code.  See the Func
  3223.   tion/Procedure Guide documentation on the PCKVLD() function
  3224.   for more information.
  3225.  
  3226.   Required: - This field will accept either Y-Yes or N-No,
  3227.   enter Yes if the GET field cannot be left blank.  Enter No
  3228.   if a blank is acceptable in this GET.
  3229.                                                 Page: 72
  3230.   ADDITIONAL ITEMS MENU - VALID - Check Character(s)
  3231.  
  3232.   Selecting the "Check Character(s)" valid for a GET variable
  3233.   will present a dialog window with a short description of
  3234.   what this valid does and the two entry fields needed to
  3235.   create the valid.  This screen looks like the following.
  3236.  
  3237.  
  3238.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  3239. ╔═══════════════╗                Aeolus Software                               ║
  3240. ║ Move Window   ║         Test Builder 2.2 Application                         ║
  3241. ║ Size Window   ║══════════════════════════════════════════════════════════════╗
  3242. ║ Move Elements ║ance█                Process   ╔════════╡TEST╞═══════╗        ║
  3243. ║█Edit Ele╔═════════════════════════════════════║ Pick List Validate  ║════════╝
  3244. ╚═════════║      Comment: ██████████████████████║█Check Character(s)██║░░░░░░░░░
  3245. ░░░░░░░░░░║ Mes╔═ DIAL╔═══════════════════════════════════════════╗   ║░░░░░░░░░
  3246. ░░░░░░░░░░║    ║ Displ║ The GET Value Must be Contained in the    ║   ║░░░░░░░░░
  3247. ░░░░░░░░░░╚════║ █████║ Search String You Enter, or the Error     ║e  ║░░░░░░░░░
  3248. ░░░░░░░░░░░░░░░║ Enhan║ Message Will be displayed.                ║   ║░░░░░░░░░
  3249. ░░░░░░░░░░░░░░░║      ║                                           ║ld ║░░░░░░░░░
  3250. ░░░░░░░░░░░░░░░║ GET v║ Search String: ██████████████████████████ ║   ║░░░░░░░░░
  3251. ░░░░░░░░░░░░░░░║ Pictu║ Error Message: ██████████████████████████ ║═══╝░░░░░░░░░
  3252. ░░░░░░░░░░░░░░░║ █████║                                           ║░░░░░░░░░░░░░
  3253. ░░░░░░░░░░░░░░░║ Initi╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
  3254. ░░░░░░░░░░░░░░░║ Initialize to:                           ║░░░░░░░░░░░░░░░░░░░░░
  3255. ░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  3256. ░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░░░
  3257. ░░░░░░░░░░░░░░░║    █Valid█ Append  Edit Help  Delete     ║░░░░░░░░░░░░░░░░░░░░░
  3258. ░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░
  3259. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3260. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3261. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3262. ▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
  3263.  
  3264.  
  3265.   The "Check Character(s)" valid function will verify that
  3266.   input keyed into a GET variable is embedded in the search
  3267.   string you supply.  If the keyed value is not found, the
  3268.   error message is displayed and the cursor will not proceed
  3269.   to the next GET field.
  3270.  
  3271.   For example if the GET variable is one byte long and is
  3272.   required to contain a "Y" or "N" to indicate Yes or No, the
  3273.   search string should be entered as "YN" (without the
  3274.   quotes).  If a blank space is acceptable the search string
  3275.   should be entered as " YN".  If the GET variable is more
  3276.   than one byte in length a suitable delimiter should be used.
  3277.   For example the search string "A1~B2~C4" would allow "A1",
  3278.   "B2", or "C4" to be entered into a two byte field.  The
  3279.   delimiter is needed to try to prevent the acceptance of
  3280.   erroneous input.  For example if the previous example search
  3281.   string were entered as "A1B2C4" then the erroneous input of
  3282.   "1B" and "2C" would be allowed.
  3283.  
  3284.   Note that the data type for the GET variable must be
  3285.   character to use this valid function.
  3286.  
  3287.   Search String: - Enter a value such that the following
  3288.   returns true when the GET field is entered:
  3289.  
  3290.   GetVariable $ SearchString
  3291.  
  3292.                                            Page: 73
  3293.  
  3294.   Where GetVariable is the data entered into the GET variable
  3295.   and SearchString is the data you enter into the search
  3296.   string field.
  3297.  
  3298.   Error Message: - Message to be displayed on the line above
  3299.   the bottom window border for the current window when invalid
  3300.   input is entered.
  3301.                                                 Page: 74
  3302.   ADDITIONAL ITEMS MENU - VALID - Field Required
  3303.  
  3304.   The "Field Required" valid function can be attached to a GET
  3305.   variable of any data type.  If the GET variable is EMPTY()
  3306.   the error message is displayed on the line above the bottom
  3307.   window border and the cursor will not proceed to the next
  3308.   GET field.  This screen looks like this.
  3309.  
  3310.  
  3311.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  3312. ╔═══════════════╗                Aeolus Software                               ║
  3313. ║ Move Window   ║         Test Builder 2.2 Application                         ║
  3314. ║ Size Window   ║══════════════════════════════════════════════════════════════╗
  3315. ║ Move Elements ║ance█                Process   ╔════════╡TEST╞═══════╗        ║
  3316. ║█Edit Ele╔═════════════════════════════════════║ Pick List Validate  ║════════╝
  3317. ╚═════════║      Comment: ██████████████████████║ Check Character(s)  ║░░░░░░░░░
  3318. ░░░░░░░░░░║ Mes╔═ DIALOG ═════════════╡Record: 1║█Field Required██████║░░░░░░░░░
  3319. ░░░░░░░░░░║    ║ Displ╔═══════════════════════════════════════════╗   ║░░░░░░░░░
  3320. ░░░░░░░░░░╚════║ █████║ The GET is Not Allowed to be EMPTY(), if  ║e  ║░░░░░░░░░
  3321. ░░░░░░░░░░░░░░░║ Enhan║ it is then the Error Message You Enter    ║   ║░░░░░░░░░
  3322. ░░░░░░░░░░░░░░░║      ║ Here Will be Displayed.                   ║ld ║░░░░░░░░░
  3323. ░░░░░░░░░░░░░░░║ GET v║                                           ║   ║░░░░░░░░░
  3324. ░░░░░░░░░░░░░░░║ Pictu║ Error Message: ██████████████████████████ ║═══╝░░░░░░░░░
  3325. ░░░░░░░░░░░░░░░║ █████║                                           ║░░░░░░░░░░░░░
  3326. ░░░░░░░░░░░░░░░║ Initi╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
  3327. ░░░░░░░░░░░░░░░║ Initialize to:                           ║░░░░░░░░░░░░░░░░░░░░░
  3328. ░░░░░░░░░░░░░░░║ ████████████████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░
  3329. ░░░░░░░░░░░░░░░╔══════════════════════════════════════════╗░░░░░░░░░░░░░░░░░░░░░
  3330. ░░░░░░░░░░░░░░░║    █Valid█ Append  Edit Help  Delete     ║░░░░░░░░░░░░░░░░░░░░░
  3331. ░░░░░░░░░░░░░░░╚══════════════════════════════════════════╝░░░░░░░░░░░░░░░░░░░░░
  3332. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3333. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3334. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3335. ▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
  3336.  
  3337.  
  3338.   This valid simply forces the GET field to be non-blank.
  3339.  
  3340.   Only one field needs to be filled in to set up this
  3341.   validation.
  3342.  
  3343.   Error Message: - Enter the error message to display when an
  3344.   attempt is made to cursor past the GET field while it is
  3345.   empty.
  3346.                                                 Page: 75
  3347.   ADDITIONAL ITEMS MENU - VALID - Duplicate Check
  3348.  
  3349.   The "Duplicate Check" valid function attempts an indexed
  3350.   lookup in a database to determine if the value entered into
  3351.   the GET will create a duplicate key value.  If ADDing a new
  3352.   record the value of the GET must not currently exist in the
  3353.   database.  If CHANGing a record the value of the GET must
  3354.   not exist in the database _except_ for the current database
  3355.   record.  Enter the following to have BUILDER create the
  3356.   source code needed for a duplicate check:
  3357.  
  3358.   Note that before the "Duplicate Check" can be used in your
  3359.   program the database will need to be created and opened as
  3360.   will the index files. You may also want to create a file
  3361.   maintenance routine for the checked database.  See the "Edit
  3362.   Databases USEd" and "Modify Create Structure" under the
  3363.   "Files" main menu option for more information on creating
  3364.   and opening database and index files.
  3365.  
  3366.   There are six fields to be filled in for BUILDER to have the
  3367.   information to create the "Duplicate Check" valid.  They
  3368.   look like the following screen sample.
  3369.  
  3370.  
  3371.   INSERT  SCREEN BLDR031.SCR
  3372.  
  3373.  
  3374.  
  3375.  
  3376.  
  3377.  
  3378.  
  3379.  
  3380.  
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386.  
  3387.  
  3388.  
  3389.   Add/Chg Var: - The name of a character variable that will
  3390.   contain the value "A" when ADDing a record or "C" when
  3391.   CHANGing a record.  Leave blank for GEN_MAINTs and
  3392.   REL_MAINTs and BUILDER will enter the variable needed when
  3393.   the code is generated.
  3394.  
  3395.   File Alias: - This field is required but entry is not
  3396.   checked.  If you try to bypass this field a list of .DBFs in
  3397.   the current directory will be presented for selection.
  3398.   Enter the alias name of the database in which to verify the
  3399.                                            Page: 76
  3400.  
  3401.   GET entry.  Almost always you will enter the alias name
  3402.   where the GET data originated.
  3403.  
  3404.   Index Order: - This field is also required.  Enter the index
  3405.   order number to use to do an indexed search for the GET
  3406.   input.  Assistance with entry is available if there are
  3407.   index entries for the database entered in the previous
  3408.   field.  The text "F10-Index List" will be displayed on the
  3409.   bottom of the window when a list is available.
  3410.  
  3411.   Key Expression to SEEK for Duplicate Check: - Enter any
  3412.   valid Clipper expression to do the indexed search.  The GET
  3413.   variable should be used somewhere in this expression.
  3414.  
  3415.   Error Message: - The error message displayed if an attempt
  3416.   is made to enter a duplicate key value into the GET field.
  3417.  
  3418.   Required? (Y/N) - Enter "Y" if the GET cannot be blank, or
  3419.   "N" if blank value is acceptable.  If the GET is blank,
  3420.   duplicate checking is not performed.
  3421.                                                 Page: 77
  3422.   ADDITIONAL ITEMS MENU - VALID - In a File Validate
  3423.  
  3424.   This valid function does essentially the same thing as the
  3425.   "Pick List Validate", it only allows input into a GET if the
  3426.   data keyed is located in a look-up database.  The difference
  3427.   with "In a File Validate" is instead of helping with a
  3428.   picklist on erroneous input, it simply presents an error
  3429.   message.
  3430.  
  3431.   Note that before the "In a File Validate" can be used in
  3432.   your program the database will need to be created and opened
  3433.   as will the index files.  You may also want to create a file
  3434.   maintenance routine for the checked database.  See the "Edit
  3435.   Databases USEd" and "Modify Create Structure" under the
  3436.   "Files" main menu option for more information on creating
  3437.   and opening database and index files.
  3438.  
  3439.   There are four fields to be filled in for BUILDER to have
  3440.   the information to create the "In a File Validate", They
  3441.   look like this screen.
  3442.  
  3443.  
  3444.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  3445. ╔═══════════════╗                Aeolus Software                               ║
  3446. ║ Move Window   ║         Test Builder 2.2 Application                         ║
  3447. ║ Size Window   ║══════════════════════════════════════════════════════════════╗
  3448. ║ Move Elements ║ance█                Process   ╔════════╡TEST╞═══════╗        ║
  3449. ║█Edit Ele╔═════════════════════════════════════║ Pick List Validate  ║════════╝
  3450. ╚═════════║      Comment: ██████████████████████║ Check Character(s)  ║░░░░░░░░░
  3451. ░░░░░░░░░░║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required      ║░░░░░░░░░
  3452. ░░░░░░░░░░║    ║ Display Text:                  ║ Duplicate Check     ║░░░░░░░░░
  3453. ░░░░░░░░░░╚════║ ███████████████████████████████║█In a File Validate██║░░░░░░░░░
  3454. ░░░░░░░░░░░░░░░║ Enhan╔═══════════════════════════════════════════╗   ║░░░░░░░░░
  3455. ░░░░░░░░░░░░░░░║      ║ If GET Entry is Not FOUND() in a File then║ld ║░░░░░░░░░
  3456. ░░░░░░░░░░░░░░░║ GET v║ Do Not Allow the Entry and Present the    ║   ║░░░░░░░░░
  3457. ░░░░░░░░░░░░░░░║ Pictu║ Error Message.                            ║═══╝░░░░░░░░░
  3458. ░░░░░░░░░░░░░░░║ █████║                                           ║░░░░░░░░░░░░░
  3459. ░░░░░░░░░░░░░░░║ Initi║    File Alias: ████████                   ║░░░░░░░░░░░░░
  3460. ░░░░░░░░░░░░░░░║ Initi║   Index Order: █0                         ║░░░░░░░░░░░░░
  3461. ░░░░░░░░░░░░░░░║ █████║ Error Message:                            ║░░░░░░░░░░░░░
  3462. ░░░░░░░░░░░░░░░╔══════║ █████████████████████████████████████████ ║░░░░░░░░░░░░░
  3463. ░░░░░░░░░░░░░░░║    █V║      Required? █   (Y/N)                  ║░░░░░░░░░░░░░
  3464. ░░░░░░░░░░░░░░░╚══════║                                           ║░░░░░░░░░░░░░
  3465. ░░░░░░░░░░░░░░░░░░░░░░╚═══════════════════════════════════════════╝░░░░░░░░░░░░░
  3466. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3467. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3468. ▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
  3469.  
  3470.  
  3471.   File Alias: - This field is required but entry is not
  3472.   checked.  If you try to bypass this field a list of .DBFs in
  3473.   the current directory will be presented for selection.
  3474.   Enter the alias name of the database in which to verify the
  3475.   GET entry.
  3476.  
  3477.   Index Order: - This field is also required.  Enter the index
  3478.   order number to use to do an indexed search for the GET
  3479.   input.  Assistance with entry is available if there are
  3480.   index entries for the database entered in the previous
  3481.   field.  The text "F10-Index List" will be displayed on the
  3482.   bottom of the window when a list is available.
  3483.  
  3484.                                            Page: 78
  3485.  
  3486.   Error Message: - If the data keyed into the GET is not found
  3487.   in the look-up database the message entered into this field
  3488.   will be displayed on the bottom line of your application
  3489.   window.
  3490.  
  3491.   Required? - If this GET can be blank then enter "N"-No it is
  3492.   not required.  Enter "Y" if it cannot be blank.
  3493.                                                 Page: 79
  3494.   ADDITIONAL ITEMS MENU - VALID - Generic Valid
  3495.  
  3496.   The "Generic Valid" validates the GET input based a logical
  3497.   expression you enter.  You may use any legitimate Clipper
  3498.   expression that returns a logical value, you may use .AND.,
  3499.   .OR., .NOT., and call functions (including your own UDFs) in
  3500.   this expression.
  3501.  
  3502.   There are three fields to be filled in for BUILDER to have
  3503.   the information needed to create the "Generic Valid", They
  3504.   look like this screen sample.
  3505.  
  3506.  
  3507.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  3508. ╔═══════════════╗                Aeolus Software                               ║
  3509. ║ Move Window   ║         Test Builder 2.2 Application                         ║
  3510. ║ Size Window   ║══════════════════════════════════════════════════════════════╗
  3511. ║ Move Elements ║ance█                Process   ╔════════╡TEST╞═══════╗        ║
  3512. ║█Edit Ele╔═════════════════════════════════════║ Pick List Validate  ║════════╝
  3513. ╚═════════║      Comment: ██████████████████████║ Check Character(s)  ║░░░░░░░░░
  3514. ░░░░░░░░░░║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required      ║░░░░░░░░░
  3515. ░░░░░░░░░░║    ║ Display Text:                  ║ Duplicate Check     ║░░░░░░░░░
  3516. ░░░░░░░░░░╚════║ ███████████████████████████████║ In a File Validate  ║░░░░░░░░░
  3517. ░░░░░░░░░░░░░░░║ Enhanced Color?: N (Y/N)       ║█Generic Valid███████║░░░░░░░░░
  3518. ░░░░░░░░░░░░░░░║      ╔════════════════════════════════════════════════╗░░░░░░░░
  3519. ░░░░░░░░░░░░░░░║ GET v║ The GET is Allowed if the Logical Expr         ║░░░░░░░░
  3520. ░░░░░░░░░░░░░░░║ Pictu║ Evaluates to .T., Otherwise the Error          ║░░░░░░░░
  3521. ░░░░░░░░░░░░░░░║ █████║ Message Will be displayed.                     ║░░░░░░░░
  3522. ░░░░░░░░░░░░░░░║ Initi║                                                ║░░░░░░░░
  3523. ░░░░░░░░░░░░░░░║ Initi║ Logical Expression: ██████████████████████████ ║░░░░░░░░
  3524. ░░░░░░░░░░░░░░░║ █████║      Error Message: ██████████████████████████ ║░░░░░░░░
  3525. ░░░░░░░░░░░░░░░╔══════║     Required Field: N                          ║░░░░░░░░
  3526. ░░░░░░░░░░░░░░░║    █V║                                                ║░░░░░░░░
  3527. ░░░░░░░░░░░░░░░╚══════╚════════════════════════════════════════════════╝░░░░░░░░
  3528. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3529. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3530. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3531. ▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
  3532.  
  3533.  
  3534.   Logical Expression: - As stated above, this is any valid
  3535.   Clipper expression that returns a logical value.  If the
  3536.   result of this expression is false (.F.) the error message
  3537.   will be displayed and the cursor will not be able to proceed
  3538.   to the next GET.  If the expression returns true (.T.) then
  3539.   the cursor will proceed to the following GET.
  3540.  
  3541.   Error Message: - The message to display if the logical
  3542.   expression returns a value of false (.F.).
  3543.  
  3544.   Required Field: - If this GET can be blank then enter "N"-No
  3545.   it is not required.  Enter "Y" if it cannot be blank.
  3546.                                                 Page: 80
  3547.   ADDITIONAL ITEMS MENU - VALID - Right Justify Field
  3548.  
  3549.   The "Right Justify Field" Valid function doesn't actually
  3550.   'validate' the GET var, it simply right justifies the GET
  3551.   data .  The GET variable must be a character data type to
  3552.   use this function.  The entry window appears similar to the
  3553.   following screen.
  3554.  
  3555.  
  3556.   Change Window █Add Window█ Files  Options  Colors  Mode  About  Exit
  3557. ║              ╔════════════╗    Aeolus Software                               ║
  3558. ║              ║ Menu       ║t Builder 2.2 Application                         ║
  3559. ╔══════════════║ Pick List  ║══════════════════════════════════════════════════╗
  3560. ║        █Maint║█Dialog█████║         Process            ╔════════╡TEST╞═══════╗
  3561. ╚══════════════║ Fi╔═════════════════════════════════════║ Pick List Validate  ║
  3562. ░░░░░░░░░░░░░░░║ Co║      Comment: ██████████████████████║ Check Character(s)  ║
  3563. ░░░░░░░░░░░░░░░╚═══║ Mes╔═ DIALOG ═════════════╡Record: 1║ Field Required      ║
  3564. ░░░░░░░░░░░░░░░░░░░║    ║ Display Text:                  ║ Duplicate Check     ║
  3565. ░░░░░░░░░░░░░░░░░░░╚════║ ███████████████████████████████║ In a File Validate  ║
  3566. ░░░░░░░░░░░░░░░░░░░░░░░░║ Enhanced Color?: N (Y/N)       ║ Generic Valid       ║
  3567. ░░░░░░░░░░░░░░░░░░░░░░░░║                                ║█Right Justify Field█║
  3568. ░░░░░░░░░░░░░░░░░░░░░░░░║ GET v╔═══════════════════════════════════════════╗   ║
  3569. ░░░░░░░░░░░░░░░░░░░░░░░░║ Pictu║ The GET Value Will Be Right Justified and ║═══╝
  3570. ░░░░░░░░░░░░░░░░░░░░░░░░║ █████║ Filled With the Fill Character Entered.   ║░░░░
  3571. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initi║ May be Used Only With Character Fields!   ║░░░░
  3572. ░░░░░░░░░░░░░░░░░░░░░░░░║ Initi║                                           ║░░░░
  3573. ░░░░░░░░░░░░░░░░░░░░░░░░║ █████║ Fill Character: █                         ║░░░░
  3574. ░░░░░░░░░░░░░░░░░░░░░░░░╔══════║ Use this VALID? █ (Y/N)                   ║░░░░
  3575. ░░░░░░░░░░░░░░░░░░░░░░░░║    █V║                                           ║░░░░
  3576. ░░░░░░░░░░░░░░░░░░░░░░░░╚══════╚═══════════════════════════════════════════╝░░░░
  3577. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3578. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3579. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3580. ▓ Enter VALID Information ▓ Ctrl+PgDn-Delete ▓ ESC-Exit ▓
  3581.  
  3582.  
  3583.   Fill Character: - Enter the fill character when right
  3584.   justifying the variable.  Usually space or zero.  For
  3585.   example if the fill character is space and the GET variable
  3586.   entered looks like
  3587.   "12    ", using the "Right Justify Field" Valid function
  3588.   would cause it to look like "    12".  Using a zero as the
  3589.   fill character would change the GET variable from "12    "
  3590.   to "000012".
  3591.  
  3592.   Use this VALID? - Enter Y to use this Valid function or N
  3593.   not to use it.
  3594.                                                 Page: 81
  3595.   ADDITIONAL ITEMS MENU - VALID - Comment Only
  3596.  
  3597.   The "Comment Only" option is useful when you will be writing
  3598.   a custom valid function and want to leave yourself messages
  3599.   in the source code.  Or just need to leave a unique note
  3600.   about this particular GET variable.  There is only one field
  3601.   in the entry window for this option.
  3602.  
  3603.   Field Comment: - Enter comment text.  Your comment will be
  3604.   put in the generated source code following the @...GET
  3605.   command.
  3606.                                                 Page: 82
  3607.   ADDITIONAL ITEMS MENU - IMPORT
  3608.  
  3609.   Select the "Import" option for the "Additional Items" menu
  3610.   to add elements to a dialog or file-maintenance window using
  3611.   the fields of a .DBF database or the BUILDER data
  3612.   dictionary.
  3613.  
  3614.   Selecting "Import" will first present a menu to select
  3615.   between a data dictionary for .DBF import.  Then a list box
  3616.   of available .DBF databases for the selection is given.  If
  3617.   no databases exist in the default directory an error message
  3618.   is presented.  The "Create/Modify Structure" BUILDER menu
  3619.   option will allow you to create .DBF database structures if
  3620.   needed.
  3621.  
  3622.  
  3623.   Select a database from the list box using the up and down
  3624.   arrow keys and the page up and page down keys to move the
  3625.   highlight pointer to the desired database.  Once selected a
  3626.   list box is presented with a list of all the fields in the
  3627.   selected database.  Tag each of the fields you would like to
  3628.   append into the dialog or file-maintenance window to which
  3629.   you are adding.
  3630.  
  3631.   Use the up and down and the page up and page down keys to
  3632.   move the highlight pointer.  Press "T" to toggle a field as
  3633.   tagged/untagged. Press "A" to tag all the fields or "U" to
  3634.   untag all the fields.  A field is tagged when it is
  3635.   surrounded on either side by 'baby double parenthesis'.
  3636.  
  3637.   Import field tag screen sample.
  3638.  
  3639.  
  3640.  █Change Window█ Add Window  Files  Options  Colors  Mode  About  Exit
  3641. ╔═══════════════╗                Aeolus Software                               ║
  3642. ║ Move Window   ║         Test Builder 2.2 Application                         ║
  3643. ║ Size Window   ║══════════════════════════════════════════════════════════════╗
  3644. ║ Move Elements ║ance█                Process                 Reports          ║
  3645. ║█Edit Ele╔══════════════════════════════════════════════╗═════════════════════╝
  3646. ╚═════════║      Comment: ██████████████████████████████ ║░░░░░░░░░░░░░░░░░░░░░░
  3647. ░░░░░░░░░░║ Mes╔═ DIALOG ════════╔═════════════════════╗══╗░░░░░░░░░░░░░░░░░░░░░
  3648. ░░░░░░░░░░║    ║ Display Text:   ║█PRDCT_NBR██C██10██0█║  ║░░░░░░░░░░░░░░░░░░░░░
  3649. ░░░░░░░░░░╚════║ ████████████████║ SERL_NBR   C  12  0 ║  ║░░░░░░░░░░░░░░░░░░░░░
  3650. ░░░░░░░░░░░░░░░║ Enhanced Color?:║ CSTMR_NBR  C   5  0 ║  ║░░░░░░░░░░░░░░░░░░░░░
  3651. ░░░░░░░░░░░░░░░║                 ║ SYSTEM_ID  C   5  0 ║  ║░░░░░░░░░░░░░░░░░░░░░
  3652. ░░░░░░░░░░░░░░░║ GET var: ███████║ QUANTITY   N   3  0 ║  ║░░░░░░░░░░░░░░░░░░░░░
  3653. ░░░░░░░░░░░░░░░║ Picture:        ║ CATEGORY   C   4  0 ║═══╗░░░░░░░░░░░░░░░░░░░░
  3654. ░░░░░░░░░░░░░░░║ ████████████████║ COST       N  10  2 ║DBF║░░░░░░░░░░░░░░░░░░░░
  3655. ░░░░░░░░░░░░░░░║ Initialize?: N (║ ASSET_NBR  N   4  0 ║BF ║░░░░░░░░░░░░░░░░░░░░
  3656. ░░░░░░░░░░░░░░░║ Initialize to:  ║ ASSET_IDNO N   4  0 ║   ║░░░░░░░░░░░░░░░░░░░░
  3657. ░░░░░░░░░░░░░░░║ ████████████████╚═════════════════════╝   ║░░░░░░░░░░░░░░░░░░░░
  3658. ░░░░░░░░░░░░░░░╔═══════════════════║ from Data║            ║░░░░░░░░░░░░░░░░░░░░
  3659. ░░░░░░░░░░░░░░░║     Valid █Append█║ from .DBF║            ║░░░░░░░░░░░░░░░░░░░░
  3660. ░░░░░░░░░░░░░░░╚═══════════════════╚══════════╚════════════╝░░░░░░░░░░░░░░░░░░░░
  3661. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3662. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3663. ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  3664. ▓  PgUp/PgDn-Scroll ▓ T-Tag Toggle ▓ A/U-Tag/Untag All ▓ ESC-Exit ▓
  3665.  
  3666.  
  3667.   Press ESC when all the desired fields to be added have been
  3668.                                            Page: 83
  3669.  
  3670.   tagged.  They will then be added as window elements.  The
  3671.   field name will entered in both the "Display Text" and the
  3672.   "GET var" fields.  The field size and type will also be
  3673.   entered where applicable.
  3674.                                                 Page: 84
  3675.   ADDITIONAL ITEMS MENU - EDIT HELP
  3676.  
  3677.   The "Edit Help" menu option, when selected from the
  3678.   "Additional Items" menu, creates a detail help screen for
  3679.   the current GET variable in the current prototype window.
  3680.   Each GET variable may have its own help screen. This help
  3681.   screen will be accessible by the user of your application
  3682.   when the current window is in use and their cursor is
  3683.   located in the GET variable.
  3684.  
  3685.   Enter text into the help screen window as you would like it
  3686.   to appear for the users of your application.  Use the arrow
  3687.   keys to navigate inside the window.  The text will word wrap
  3688.   at the right border.  Page Up/Down will scroll one screenful
  3689.   of text backward and forward.  You will be limited to as
  3690.   many lines of text as the "Options" maximum help lines
  3691.   setting allows.  This limitation can be changed and is
  3692.   located under the "Options" main menu selection.
  3693.  
  3694.   Press Ctrl+W to save a help screen or ESC to abandon the
  3695.   changes.
  3696.  
  3697.   Often many help screens in a system will be identical, or
  3698.   very nearly identical.  Press the F10 key to present a
  3699.   picklist of all the help screens.  Use the Up/Down and Page
  3700.   Up/Page Down keys to move the highlight pointer.  Press
  3701.   ENTER to copy the highlighted help screen into the current
  3702.   help screen, the copied help data will always be
  3703.  
  3704.   appended to the end of text in the current help window.
  3705.   Press ESC to abandon the help screen copy.
  3706.                                                 Page: 85
  3707.   ADDITIONAL ITEMS MENU - DELETE
  3708.  
  3709.   When selected a confirmation window will be presented.
  3710.   Press Y to delete all the elements in the current window,
  3711.   this will effectively delete the window from the application
  3712.   prototype.  Press N or ESC and no delete will occur and
  3713.   control will be returned to the "Additional Items" menu.
  3714.                                                 Page: 86
  3715.   CROSSHAIRS
  3716.  
  3717.   The crosshairs are simply a red vertical line and a red
  3718.   horizontal line displayed on the screen.  The crosshairs are
  3719.   only visible during active crosshair operation, they will
  3720.   not be displayed when not in use.  They are used to mark a
  3721.   spot on the screen you want to remember.  For example, if
  3722.   you want to construct many windows in the exact same
  3723.   location.  You could set the crosshairs to the desired
  3724.   location and they would retain that position until you exit
  3725.   the BUILDER program or move them.  Then when you finish each
  3726.   of the many windows, press the crosshair key to see if the
  3727.   window lines up to your crosshair location.  Use the BUILDER
  3728.   "Move Window" feature to move the window until it
  3729.   corresponds with the crosshairs.
  3730.  
  3731.   Crosshair operation is simple and straightforward, these
  3732.   keys are available during crosshair use:
  3733.  
  3734.   Alt+R - will activate the crosshair anytime during BUILDER
  3735.   program execution.
  3736.  
  3737.   Up/Down Arrows - will move the horizontal crosshair up/down
  3738.   one screen row.
  3739.  
  3740.   Ctrl + PgUp/PgDn - will move the horizontal crosshair to the
  3741.   top-most/bottommost screen row.
  3742.  
  3743.   Right/Left Arrows - will move the vertical crosshair
  3744.   right/left one screen column.
  3745.  
  3746.   TAB/Back TAB - will move the vertical crosshair right/left
  3747.   ten screen columns.
  3748.  
  3749.   Ctrl + Right/Left Arrows - will move the vertical crosshair
  3750.   to the rightmost/leftmost screen column.
  3751.  
  3752.   ESC - will exit the crosshair routine and return to the
  3753.   BUILDER function before the crosshair was activated.
  3754.                                                 Page: 87
  3755.   F1 HELP SYSTEM
  3756.  
  3757.   There are two, yes two, help systems with respect to
  3758.   BUILDER.  One is the F1 help system used by your application
  3759.   and the other is the F3 help system that allows you to get
  3760.   context sensitive help when executing the BUILDER or BREPORT
  3761.   programs.
  3762.  
  3763.   This section deals with the former, the help system
  3764.   incorporated into your applications.
  3765.  
  3766.   When you create a BUILDER application prototype, one of the
  3767.   first questions you must answer is if you would like a help
  3768.   system incorporated into your application.  If you answer
  3769.   yes, then the F1 key will activate a context sensitive help
  3770.   system in your application.  If you answer no, then the help
  3771.   system source code will not be created and the F1 key won't
  3772.   do anything.
  3773.  
  3774.   Regardless of whether you say yes or no to a help system for
  3775.   your application, the file HELP.DBF/.DBT is created and
  3776.   seeded with general help screens.  You will also be able to
  3777.   enter help additional screens in BUILDER if you answered no.
  3778.   The reason for this is twofold. One, you might change your
  3779.   mind and at a later time include a help system. Two, (and
  3780.   more important) when a help system is not being incorpo
  3781.   rated, the BUILDER help screens make an excellent place for
  3782.   programmers notes.  Using the help screens for programmers
  3783.   notes is especially useful when several people participate
  3784.   in developing an application.
  3785.  
  3786.   The BUILDER generated help system recognizes seven specific
  3787.   access points.  Each access point can have two help screens.
  3788.   Help screen one being "General" help, and help screen two
  3789.   "Detail" help.  Six of the seven access point "General" help
  3790.   screens are very generic, and are automatically created by
  3791.   BUILDER.  All other help screens are unique to the
  3792.   application and must be created by the programmer,
  3793.   application user or both.
  3794.  
  3795.   The seven help system access points are:
  3796.  
  3797.   1.  Menus.
  3798.    a. General help automatic.
  3799.    b. Detail help custom per function.
  3800.  
  3801.   2.  Dialog Boxes.
  3802.    a.  General help custom per function.
  3803.    b.  Detail help custom per GET field.
  3804.  
  3805.   3.  Picklists.
  3806.    a.  General help automatic.
  3807.  
  3808.                                            Page: 88
  3809.  
  3810.    b.  Detail help custom per function.
  3811.  
  3812.   4.  File Maintenance Windows (while using it's menu)
  3813.    a.  General help automatic.
  3814.    b.  Detail help custom per function.
  3815.  
  3816.   5.  File Maintenance Windows (while editing the GETs).
  3817.    a.  General help automatic.
  3818.    b.  Detail help custom per GET field.
  3819.  
  3820.   6.  REL_MAINT() execution (while using menu).
  3821.    a.  General help automatic
  3822.    b.  Detail help custom per function.
  3823.  
  3824.   7.  REL_MAINT() execution (while editing GETs).
  3825.    a.  General help automatic.
  3826.    b.  Detail help custom per GET field.
  3827.  
  3828.   8. TBrowses.
  3829.    a.  General help automatic.
  3830.    b.  Detail help custom per function.
  3831.  
  3832.   Each "General" help screen is a 'how to' screen which
  3833.   answers what each available keyboard key will do.  Each
  3834.   "Detail" help screen is a 'why is it here' screen.  For
  3835.   example a "Detail" help screen for a system menu should
  3836.   describe what each menu prompt is for.
  3837.  
  3838.   In the above list, each help screen that is "custom per
  3839.   function" should answer the question 'What is this window
  3840.   for?'.  Each help screen that is "custom per GET field"
  3841.   should answer the questions "What are the allowable values
  3842.   for this field?" and "What does this field do?".
  3843.  
  3844.  
  3845.   Your Quesions on the Help System:
  3846.   Q.  Where in BUILDER do I edit which type of help screen?
  3847.  
  3848.   A.  If you see the question "Edit Help?" and there is a
  3849.   field for the cursor, answering Y-Yes will edit a help
  3850.   screen for a 'function'.
  3851.  
  3852.   If you select "Edit Help" from a menu you will be editing a
  3853.   help screen for a 'GET field'.
  3854.  
  3855.  
  3856.   Q.  O.K., but there isn't a REL_MAINT() window in BUILDER!
  3857.   How do I edit it's help screens?
  3858.  
  3859.   A.  A REL_MAINT() is a converted dialog box.  The conversion
  3860.   is very simple, but is done by hand.  A dialog box "General"
  3861.   help screen will be used as a REL_MAINT() menu detail help
  3862.  
  3863.                                            Page: 89
  3864.  
  3865.   screen (6-b in the above list).  Dialog box GET field help
  3866.   screen will be used as REL_MAINT() GET field detail help
  3867.   screens (7-b in the above list).  The other two types of
  3868.   REL_MAINT() help screens are automatically created by
  3869.   BUILDER.  See the BUILDER Library Reference Guide for more
  3870.   information on the REL_MAINT() function.  (Doing this is
  3871.   MUCH easier than it sounds)
  3872.  
  3873.   Q.  Can I add/edit help screens in the application program?
  3874.   If so how?
  3875.  
  3876.   A.  Yes.  There is a field in OPTIONS.DBF (created for every
  3877.   BUILDER application) called HELP_EDIT.  It is a one byte
  3878.   character field and when it contains the value "Y" will
  3879.   allow help screens to be edited/added during application
  3880.   execution.
  3881.  
  3882.   If the HELP_EDIT field is NOT equal to "Y" the help system
  3883.   will not allow any editing or adding of help screens.  Also,
  3884.   if the F1 key is pressed and there is no "General" and no
  3885.   "Detail" help, a message box is displayed indicating no help
  3886.   is available.  If the F1 key is pressed and there is only
  3887.   "General" or only "Detail" help available, then that screen
  3888.   is displayed.  If the F1 key is pressed and both "General"
  3889.   and "Detail" help are available, the "Detail" help screen is
  3890.   displayed and the message "F1-General/Detail Toggle" is
  3891.   displayed on the bottom border of the help screen.  If both
  3892.   help screens are available, pressing the F1 key will switch
  3893.   between "General" and "Detail" help screens.
  3894.  
  3895.   If the HELP_EDIT field is equal to "Y" the help system will
  3896.   allow editing and adding of help screens.  Whenever the F1
  3897.   key is pressed the current help screen is displayed and the
  3898.   cursor is positioned at the end of the help text.  If no
  3899.   help screen is available, the cursor is set in a blank help
  3900.   screen.  Pressing the F1 key while editing a help screen
  3901.   will always toggle between the "General" and "Detail" help
  3902.   screens.  If any new help screens are added from the
  3903.   application, the title will have to be entered into HELP.DBF
  3904.   using another means (dBASE for example).  Use the arrow keys
  3905.   and PgUp/PgDn to position the cursor.  Enter help text as
  3906.   you would like it to appear.  Press Ctrl+W to save a help
  3907.   screen or ESC to abandon the changes.
  3908.  
  3909.   Caution:  Pressing ESC will erase all changes to a help
  3910.   screen!!
  3911.  
  3912.  
  3913.   Q.  What if I don't like one or more of the 'automatic' help
  3914.   screens?
  3915.  
  3916.   A.  Each of the 'automatic' help screens can be overridden.
  3917.                                            Page: 90
  3918.  
  3919.   See the section in this document titled "Default OPTIONS and
  3920.   Help" for details on how to substitute your own help screens
  3921.   in place of the BUILDER 'automatic' help screens.
  3922.  
  3923.  
  3924.   Q.  What if I have many very similar or identical help
  3925.   screens?
  3926.  
  3927.   A.  Whenever you are editing a help screen in the BUILDER
  3928.   program, the message "F10-Copy" will be displayed on the
  3929.   bottom help screen border. Simply press the F10 key to
  3930.   present a pick list of all the help screens already entered.
  3931.   Use the Up/Down arrows and Page Up/Page Down keys to move
  3932.   the highlight pointer.  Press ENTER to copy the selected
  3933.   help screen into the current help screen.  Press ESC to
  3934.   abandon the help screen copy.
  3935.                                                 Page: 91
  3936.   F3 HELP SYSTEM
  3937.  
  3938.   If you copy a help screen, it will be appended to the end of
  3939.   the current help screen.
  3940.  
  3941.   This is the help system that provides you with information
  3942.   about field entry and system operation within the BUILDER
  3943.   and BREPORT programs.
  3944.  
  3945.   If you would like help during BUILDER or BREPORT execution,
  3946.   press the F3 key.  There is a help screen available almost
  3947.   everywhere in the BUILDER and BREPORT programs.
  3948.  
  3949.   Press PgUp/PgDn to view more text.
  3950.  
  3951.   Press ESC to exit BUILDER/BREPORT help.
  3952.                                                 Page: 92
  3953.   DEFAULT OPTIONS AND HELP.
  3954.  
  3955.   Setting up a personal set of BUILDER defaults:
  3956.  
  3957.   You may set your own default values for each field in the
  3958.   "Options" screen of the BUILDER main menu.  That way
  3959.   whenever you create a new BUILDER application, your name is
  3960.   already entered in the "Name" field etc.  Also any custom
  3961.   fields you may want to add to OPTIONS.DBF, for example
  3962.   printer control string fields, can be automatically
  3963.   incorporated into each new BUILDER application.  All you
  3964.   need to do is put the file OPTIONS.DBF that contains your
  3965.   default values and any additional fields in the same
  3966.   subdirectory where BUILDER.EXE is located .  That's it!  Now
  3967.   every time you start a new BUILDER application, your
  3968.   OPTIONS.DBF will be used instead of BUILDER creating a new
  3969.   blank one.
  3970.  
  3971.   Setting up custom automatic help screens:
  3972.  
  3973.   You may customize any one or all of the automatic help
  3974.   screens.  See the section in this manual entitled 'F1 help
  3975.   system' for more information on what constitutes an
  3976.   automatic help screen.  Of the seven help access points, six
  3977.   have automatic "General" help screens.  When BUILDER is
  3978.   executed for the first time in a new subdirectory, one of
  3979.   the databases created is HELP.DBF/.DBT.  This file contains
  3980.   all the help screens that will be used in your application.
  3981.   BUILDER automatically seeds this file with six help screens.
  3982.   When each record is added, (one for each of the automatic
  3983.   help screens), the override file is searched for in the
  3984.   current DOS directory.  If the override file is found, that
  3985.   text is used as the help text for that automatic help
  3986.   screen.  If the override file was not located in the current
  3987.   DOS directory, then BUILDER searches the subdirectory where
  3988.   BUILDER.EXE is located, and if the override file is found,
  3989.   that text is used as the help text for that automatic help
  3990.   screen.  If the override file is not found in either of
  3991.   these places, then the default automatic help text is used.
  3992.  
  3993.   The override files MUST have the correct filename for
  3994.   BUILDER to 'see' it.  Also the file must be placed in the
  3995.   proper subdirectory as per the previous paragraph.  Help
  3996.   override files are simple CR/LF delimited text files.  The
  3997.   widest record in the text file should not exceed 60
  3998.   characters (the width of the help window).
  3999.  
  4000.   The six possible override filenames are as follows:
  4001.  
  4002.   MENUGEN.HLP - Menu function "General" help.
  4003.   PLSTGEN.HLP - Picklist function "General help".
  4004.   FMNTMNU.HLP - File maintenance menu "General" help.
  4005.  
  4006.                                            Page: 93
  4007.  
  4008.   FMNTGEN.HLP - File maintenance GETs "General" help.
  4009.   REL_MNU.HLP - Related file maintenance menu "General" help.
  4010.   REL_GEN.HLP - Related file maintenance GETs "General" help.
  4011.  
  4012.   Note that these files are not part of the BUILDER files and
  4013.   are not created by BUILDER.  They are strictly created by
  4014.   BUILDER users who want different help screens than the
  4015.   defaults.
  4016.                                                 Page: 94
  4017.   CONVERTING FROM BUILDER 1.0 OR 2.0
  4018.  
  4019.   For BUILDER version 1.0 or 2.0 users who want to convert to
  4020.   version 2.2.  Simply execute BUILDER (version 2.2) in the
  4021.   same subdirectory where BUILDER 1.0 or 2.0 created files
  4022.   reside.  BUILDER 2.2 will automatically detect the  older
  4023.   version  files and display the following message:
  4024.  
  4025.  
  4026.   ****** OLD BUILDER VERSION FILES ******
  4027.  
  4028.   The files in this subdirectory are from a previous version
  4029.   of BUILDER.  You may convert them now or  exit to DOS.  If
  4030.   you choose to convert, they will NOT work with the older
  4031.   version!
  4032.  
  4033.   Press C-Convert the files or E-Exit the program
  4034.  
  4035.   When this message is on the screen, press the C key on the
  4036.   keyboard to convert the files.  If you're not sure you want
  4037.   to make the switch, press the E key and no changes will be
  4038.   made.
  4039.                                                 Page: 95
  4040.   SUGGESTIONS
  4041.  
  4042.   USE THE 30 BYTE COMMENT FIELD ON EVERY WINDOW YOU CREATE,
  4043.   THE PROC MAP  AT THE BEGINNING OF EACH GENERATED APPLICATION
  4044.   WILL BE MUCH (LET ME REPEAT THAT) *MUCH* MORE READABLE!
  4045.  
  4046.   ====== When you begin an application, setup the root menu
  4047.   and then as soon as possible after that create your
  4048.   databases.  Next add all the needed databases and indexes to
  4049.   the "Databases USEd" list for the application.  This will
  4050.   make naming variables and creating File Maintenance and
  4051.   Dialog windows easier because you can import directly from
  4052.   database structures.  It is highly advisable to enter ALL
  4053.   memory variables into the data dictionary - this is the only
  4054.   way Builder can know that it is a memory variable.  Not
  4055.   entering memory variables into the data dictionary will
  4056.   cause the generated source code to contain unscoped memory
  4057.   variables in the program.
  4058.  
  4059.   At this point, decide if you will be using the BUILDER data
  4060.   dictionary.  If you are going to use it, then initialize the
  4061.   data dictionary from either your database list or another
  4062.   BUILDER data dictionary.  And enter all the dictionary field
  4063.   and memory variable defaults for your application.
  4064.  
  4065.   Again, don't use a .PRG extension on your generated source
  4066.   code, you will overwrite something you worked on by hand
  4067.   sooner or later. BUILDER attempts to keep you from doing
  4068.   this, but it is possible to override.
  4069.  
  4070.   Cut from .PR1 files and paste into .PRG files to make
  4071.   changes to previously generated program source.  This is
  4072.   made simple by the way BUILDER creates source code.  If you
  4073.   have a newly updated .PR1 file with code that needs to be
  4074.   copied into your .PRG.  Use the Proc Map to locate existing
  4075.   code and update the window function.  This is very easy
  4076.   because no matter how many changes you make to any window
  4077.   type, what you will be updating are the SAYs and GETs, and
  4078.   these will almost always be grouped together.  Also, since
  4079.   new windows are appended to the end of each source procedure
  4080.   section, search keys are provided for easily locating the
  4081.   newest windows.
  4082.  
  4083.   If you are adding new window functions, the task is even
  4084.   easier.  First update the Proc Map at the beginning of the
  4085.   target application's source file.  Next locate the end of
  4086.   the window type to which you will be adding new functions .
  4087.   Use the end markers for this, search for  ENDMENU, ENDHAND,
  4088.   ENDDLOG, ENDPLST,  ENDFMNT, ENDRMNT, or ENDBRWS to locate
  4089.   the last function for each window type.  Then simply copy in
  4090.   the new functions after the last function and before the end
  4091.   marker.
  4092.  
  4093.                                            Page: 96
  4094.  
  4095.   There will still be work that you must do by hand.  The
  4096.   BUILDER is not designed to produce completed applications,
  4097.   only the time-consuming (boring?) repetitive tasks.
  4098.  
  4099.   How to attach a window or string of windows to a SET KEY
  4100.   TO... ? You simply create a menu option somewhere called
  4101.   "DUMMY" and create the window chain you will call with the
  4102.   the SET KEY TO... command.  When the code is generated,
  4103.   remove the "DUMMY" menu option.  Now connect the two windows
  4104.   by entering the SET KEY TO... command by hand, and doing any
  4105.   testing in the called function.
  4106.  
  4107.   Make the BUILDER prototype as complete as possible before
  4108.   generating code.  Show your users the prototype using the
  4109.   BDEMO.EXE program (registered users only) and don't code
  4110.   anything until the design is finalized.  You will be
  4111.   happier, they will be happier, and the project will be
  4112.   completed sooner.  Big design changes after you've been
  4113.   working on the code by hand for a week can set a project
  4114.   back a long way.  On the other hand, adding new windows is
  4115.   relatively easy. Try to make screen changes in BUILDER and
  4116.   avoid making anything but small screen changes in the code.
  4117.  
  4118.   Working on the source by hand, steps:
  4119.   Step one.  Modify any connections first, reroute procs where
  4120.   you need them to go, BUILDER can't connect things perfectly.
  4121.   Your application may have multiple routes to a single
  4122.   window, this is an example of rerouting a window by
  4123.   programming by hand.  This rerouting is often no more than
  4124.   entering a call to the window function in the source code
  4125.   file.
  4126.  
  4127.   Step two.  Add any needed code to dialog boxes.  I usually
  4128.   add a "Hand Code Section" following a dialog box to perform
  4129.   small tasks and enter only comments when large amounts of
  4130.   logic are needed.  I like to enter the larger logic in the
  4131.   source file and not in a "Hand Code Section".
  4132.  
  4133.   Step three.  The final step in a BUILDER generated
  4134.   application is to add your own logic, this is typically the
  4135.   guts of the program.  This requires you to develop program
  4136.   code from scratch and in a typical BUILDER application
  4137.   comprises about 10% of the program.  This programming is
  4138.   unique to the application and is typically internal logic
  4139.   that doesn't require much user interaction.
  4140.  
  4141.   Step four.  Test, test, and test.  Done?
  4142.  
  4143.   New functions and procedures should be added in a separate
  4144.   .PRG file.  This keeps the proc map clean and your
  4145.   procs/funcs are easier to find during debugging.  If these
  4146.   require access to database fields, remember to pass the
  4147.  
  4148.                                            Page: 97
  4149.  
  4150.   database STATIC arrays to any external functions, also
  4151.   remember to # include the header (.ch) that contains the
  4152.   database field definitions for your application.
  4153.                                                 Page: 98
  4154.   APPENDIX A - How to Operate Generic File Maintenance Windows.
  4155.  
  4156.   When you create a file maintenance window using BUILDER.
  4157.   Code will be generated that calls the Generic File
  4158.   Maintenance routine in the BUILDER Library.
  4159.  
  4160.   When initially presented, a file maintenance window will
  4161.   display the fields at the CURRENT RECORD LOCATION.  A menu
  4162.   centered on the top border line of the window will be in
  4163.   control.  Select "Add", "Change", "Delete", or "Find" from
  4164.   the menu by moving the highlight bar over that selection and
  4165.   pressing ENTER, press PgUp or PgDn to display the previous
  4166.   and next records, or press ESC to exit the file maintenance.
  4167.  
  4168.   When "Add" is selected the Key fields will be presented in a
  4169.   sub-window, enter the complete key data for an "Add"
  4170.   afterwhich the cursor will be positioned in the rest of GET
  4171.   fields, enter the data.  When finished, the prompt "Add
  4172.   Record? (Y/N)" will be presented.  Answer Y-Yes or N-No to
  4173.   the confirmation.
  4174.  
  4175.   When "Find" is selected the Key field will be presented in a
  4176.   sub-window also, however, enter the minimum needed to locate
  4177.   the desired record for a "Find" and the record nearest to
  4178.   the data entered will be displayed.
  4179.  
  4180.   If your file maintenance doesn't have any "Key" fields, then
  4181.   a "Duplicate Keys" file maintenance routine will be created.
  4182.   This will function the same as the "Keyed" file maintenance
  4183.   except the Key Fields sub-window will not be available.
  4184.  
  4185.   If "Change" is selected the cursor is positioned to the non-
  4186.   key fields, after field entry the confirmation prompt "Save
  4187.   Changes? (Y/N)" is given and the changes will only be saved
  4188.   if the user press the "Y" key on the keyboard.
  4189.  
  4190.   If Delete is selected the confirmation prompt "Delete
  4191.   Record? (Y/N)" is presented.  The record will only be
  4192.   deleted if the user presses the "Y" key on the keyboard.
  4193.  
  4194.   All results of confirmation prompts are displayed after they
  4195.   are completed.
  4196.                                                 Page: 99
  4197.   APPENDIX B - The Generated Source Code
  4198.  
  4199.   CODE ORGANIZATION
  4200.   The source code generated will contain up to eleven major
  4201.   sections.  These are:
  4202.  
  4203.   I     Initialization
  4204.   II    Menus
  4205.   III   Hand Code
  4206.   IV    Dialog Boxes
  4207.   V     Relation Maintenance
  4208.   VI    TBrowse's
  4209.   VII   Pick List Boxes
  4210.   VIIII File Maintenance Boxes
  4211.   IX    Index Checking
  4212.   X     Database and Index File Opens
  4213.   XI    Help System (Summer '87 only)
  4214.  
  4215.   I.  Initialization.
  4216.  
  4217.   The initialization section of the program is located at the
  4218.   beginning of the generated program and it contains twelve
  4219.   simple program sections.
  4220.  
  4221.   1. Program and author identification comments.
  4222.   2.  Proc map comments.
  4223.   3.  #includes and PRIVATE/STATIC memory variable declara
  4224.   tions.
  4225.   4.  Database field array initialization procedure.
  4226.   5.  Some SET ... commands.
  4227.   6.  Open the OPTIONS.DBF database.
  4228.   7.  Set colors and other defaults from the data in
  4229.   OPTIONS.DBF.
  4230.   8.  Display desktop and screen header.
  4231.   9. Execute the check index proc.
  4232.   10. Execute the Open databases and indexes proc.
  4233.   11. Execute root menu loop.
  4234.   12. Exit program.
  4235.  
  4236.   The initialization should be easy to decipher and the
  4237.   sections should be readily identifiable, each is commented.
  4238.   You should have no difficulty if you want to add your own
  4239.   initialization code to what is there.
  4240.  
  4241.   Commonly you can add fields to OPTIONS.DBF and include your
  4242.   own default values in section 6 of Initialization, some of
  4243.   this is done automatically by Builder.  User added fields to
  4244.   OPTIONS.DBf are declared and initialized by Builder.
  4245.  
  4246.   II. Menus.
  4247.  
  4248.   After the initialization code, the root and other menus will
  4249.                                            Page: 100
  4250.  
  4251.   follow, each menu will be in a separate proc called MENUnnn
  4252.   where nnn is equal to the window number assigned by BUILDER.
  4253.   Note that the root menu will not have a number and the proc
  4254.   will simply be called MENU.
  4255.  
  4256.   Each menu proc is prefixed by a comment box which indicates
  4257.   what type of proc called the menu and also includes the
  4258.   comment entered from BUILDER.
  4259.  
  4260.   The color is set, the window is displayed and the menu
  4261.   variable is initialized before the loop is started.  The
  4262.   WINDOW Builder command is called to display the screen
  4263.   window.
  4264.  
  4265.   A message line is displayed.  All menus called directly by
  4266.   the root menu will contain calls to TTLKEYON and TTLKEYOFF,
  4267.   these procs enable left and right scrolling for drop down
  4268.   menuing systems.
  4269.  
  4270.   For Summer '87 style code:
  4271.   The menu prompts are displayed and the MENU TO ... command
  4272.   is executed.  A CASE statement follows which reacts to each
  4273.   menu option that has a window attached to it.  The ESC key
  4274.   is trapped in the CASE to exit the menu.
  4275.  
  4276.   For Clipper 5.x style code:
  4277.   The menu prompts are displayed using the Builder WINPROMPT
  4278.   command with a code block parameter to indicate what to
  4279.   execute for each  menu option.  The BUILDER Menu() function
  4280.   is then called to execute the menu.
  4281.  
  4282.   If you included an F1-Help system in your BUILDERed
  4283.   application there will be a VARPUSH() and a VARPOP() on proc
  4284.   entry and exit points. This tells the Help System what help
  4285.   screen to display.
  4286.  
  4287.   After the menu the window and the screen area used by the
  4288.   menu is cleared and the proc is concluded.
  4289.  
  4290.   Example menu program code:
  4291.   ************************************************************
  4292.   *******************
  4293.   ** CALLED BY: Selection << File Maintenance >> in Proc:
  4294.   MENU002             **
  4295.   **   Comment: File Maintenance Menu
  4296.                  **
  4297.   ************************************************************
  4298.   *******************
  4299.   PROCEDURE Menu004()
  4300.      LOCAL aMenuArray := {}
  4301.      LOCAL nOpt2
  4302.  
  4303.  
  4304.                                            Page: 101
  4305.  
  4306.      SETCOLOR(Var(MENU_CLR_))
  4307.      @ 10,20,13,34 WINDOW STYLE "--" NOSHADOW
  4308.      VarPush("MENU004")
  4309.  
  4310.      nOpt2=0
  4311.      SetMsgLin("_ Up/Down, Left/Right-Move Pointer _ ENTER-
  4312.   Select _ ESC-Exit _")
  4313.      SETCOLOR(Var(MENU_CLR_))
  4314.  
  4315.      @ 01,01 WINPROMPT " Description " TO aMenuArray EXECUTE
  4316.   Hand025()
  4317.      @ 02,01 WINPROMPT " Sample      " TO aMenuArray EXECUTE
  4318.   Hand104()
  4319.  
  4320.      nOpt2 := Menu(aMenuArray,nOpt2)
  4321.  
  4322.      VarPop()
  4323.      WINDOW REMOVE
  4324.  
  4325.   III.  Hand Code.
  4326.  
  4327.   Hand Code functions are included in the source code only if
  4328.   at least one Hand Code Section is defined in the BUILDER
  4329.   prototype.
  4330.  
  4331.   Following the menus, will be all the functions containing
  4332.   the Hand Code you have entered.  Each will consist of a
  4333.   comment indicating what function called the Hand Code, and
  4334.   the comment for the current function.  There will be a
  4335.   function declaration followed by the Hand Code entered for
  4336.   that function.
  4337.  
  4338.   IV.  Dialog Boxes.
  4339.  
  4340.   Dialog procedures are included in the source code only if at
  4341.   least one dialog box is defined in the BUILDER prototype.
  4342.  
  4343.   The dialog box procs follow the hand code.  Dialog box logic
  4344.   can take one of three forms, depending on whether any GETs
  4345.   are entered for that dialog.  If GETs are available for the
  4346.   dialog box a READ command is executed, otherwise a WAITKEY()
  4347.   is put in the DO WHILE loop.  The WAITKEY() and DO WHILE
  4348.   loop are omitted, however, if the dialog box has no GETs and
  4349.   is followed by a "Hand Coded Section".
  4350.  
  4351.   Each dialog box begins with a comment box that indicates
  4352.   what type of proc called the dialog and also includes the
  4353.   comment entered from BUILDER.
  4354.  
  4355.   First the Builder WINDOW command places an empty window on
  4356.   the screen.
  4357.  
  4358.  
  4359.                                            Page: 102
  4360.  
  4361.   The color is set and the SAYs for the dialog are executed.
  4362.  
  4363.   After the SAYs the dialog variables, if any, are initial
  4364.   ized.  Notice that the initialization data from BUILDER is
  4365.   not checked and it is possible to create un-compilable
  4366.   source in this area.
  4367.  
  4368.   Inside the DO WHILE loop the dialog GETs, if any, are
  4369.   executed. Also inside the DO WHILE is a SetMsgLin() function
  4370.   to display the message line information you entered in
  4371.   BUILDER.
  4372.  
  4373.   The GETs will call any of the BUILDER Library VALIDs you
  4374.   selected when you created the dialog.
  4375.  
  4376.   The ESC key is trapped to exit the dialog.
  4377.  
  4378.   If you included an F1-Help system in your BUILDERed
  4379.   application there will be a VARPUSH() and a VARPOP() on the
  4380.   entry and exit points. This tells the Help System what help
  4381.   screen to display.
  4382.  
  4383.   Dialog proc example code.
  4384.   ************************************************************
  4385.   *******************
  4386.   ** CALLED BY: Selection << Bounded by Option >> in Proc:
  4387.   MENU003            **
  4388.   **   Comment: Bounded by Picklist (By State)
  4389.                  **
  4390.   ************************************************************
  4391.   *******************
  4392.   PROCEDURE Dlog028()
  4393.      LOCAL x,GetList := {},mState
  4394.  
  4395.      VarPush("DLOG028")
  4396.  
  4397.      SETCOLOR(Var(WNDW_CLR_))
  4398.      @ 13,24,19,67 WINDOW STYLE "3+"
  4399.  
  4400.      SETCOLOR(Var(WMSG_CLR_))
  4401.      @ 01,02 WINSAY "The Following Picklist Will Only Display"
  4402.      @ 02,02 WINSAY "Records From the State You Select."
  4403.      SETCOLOR(Var(WNDW_CLR_))
  4404.      @ 04,02 WINSAY "State Code:"
  4405.  
  4406.      mState := Space(02)
  4407.  
  4408.      DO WHILE .T.
  4409.         SetMsgLin("_ Enter State Code _ ESC-Exit _")
  4410.  
  4411.         @ 04,14 WINGET mState PICTURE "!!" VALIDBLOCK ;
  4412.         {|| ;
  4413.  
  4414.                                            Page: 103
  4415.  
  4416.             GenVld(In_Usa(GETACTIVE():varGet()), ;
  4417.                    "Enter a Valid U.S. State Code", ;
  4418.                    WinBott()-1,WinLeft()+2,WinRight()-
  4419.   2,.T.,Var(WERR_CLR_))}
  4420.  
  4421.         ReadGets(@GetList)
  4422.  
  4423.         IF LASTKEY() == K_ESC
  4424.            EXIT
  4425.         ENDIF
  4426.  
  4427.         ** You may want to do some validations here **
  4428.         ** before executing the next proc.          **
  4429.         Hand056(mState)
  4430.      ENDDO
  4431.  
  4432.      VarPop()
  4433.      WINDOW REMOVE
  4434.  
  4435.   V.  Relation Maintenace.
  4436.  
  4437.   One bad thing about Builder Rel_Maint()'s is each will be
  4438.   generated with between one and five PRIVATE variables.  A
  4439.   VarPush() is entered in source where a Help system has been
  4440.   requested.  This is followed by creation of the window.  The
  4441.   Builder WINSAY command displays data in the window.
  4442.  
  4443.   The database to be edited is then selected as the default
  4444.   work ared and the index order is established.
  4445.  
  4446.   Next, the relation data for adding new records is set.  The
  4447.   database is positioned, and finally the Rel_Maint() function
  4448.   is called.  The Rel_Maint() function makes calls to the
  4449.   function of WINGETs that follows each RMNT procedure created
  4450.   by Builder.
  4451.  
  4452.   In the GET function, the database relation fields are set
  4453.   and the WINGETs are performed.  If  Rel_Maint() is executing
  4454.   the GET function for and Add or Change condition, a READ is
  4455.   performed.
  4456.  
  4457.   Back in the RMNT procedure, after the Rel_Maint() call, a
  4458.   VarPop() sets the Help array to point to the previous
  4459.   window, the window is removed from the screen and the
  4460.   procedure is exited.
  4461.  
  4462.   ************************************************************
  4463.   *******************
  4464.   ** CALLED BY: Pick List Window:  PLST061   Rel_Maint()
  4465.   Sample                **
  4466.   **   Comment: Rel_Maint() Sample (Maint)
  4467.                  **
  4468.  
  4469.                                            Page: 104
  4470.  
  4471.   ************************************************************
  4472.   *******************
  4473.   PROCEDURE Rmnt062()
  4474.      LOCAL xBounds
  4475.      PRIVATE cRelKey1
  4476.      VarPush("RMNT062")
  4477.  
  4478.      SETCOLOR(Var(WNDW_CLR_))
  4479.      @ 05,00,12,29 WINDOW STYLE "3+"
  4480.  
  4481.      @ 02,02 WINSAY "First"
  4482.      @ 03,03 WINSAY "Last"
  4483.      @ 05,02 WINSAY "Phone"
  4484.  
  4485.      DBSELECTAREA("Friends")
  4486.      Friends->(DBSETORDER(1))
  4487.  
  4488.      // Set Relation Key Fields
  4489.      cRelKey1 := Cities->City
  4490.  
  4491.      Friends->(DBSEEK(Cities->City,.F.))
  4492.  
  4493.      xBounds := Cities->City
  4494.  
  4495.   Rel_Maint(WinTop(),WinLeft(),WinBott(),WinRight(),"062",{||x
  4496.   Bounds==Friends->City}, ;
  4497.         "FRIENDS",aFriends,2,"ACD")
  4498.  
  4499.      VarPop()
  4500.      WINDOW REMOVE
  4501.  
  4502.   FUNCTION Get062(cG_Func)
  4503.      LOCAL x,GetList := {}
  4504.  
  4505.      // Set Relation Key Fields
  4506.      BCITY := cRelKey1
  4507.  
  4508.      @ 02,08 WINGET BFNAME PICTURE "!xxxxxxxxxxxxx" VALIDBLOCK
  4509.   ;
  4510.         {|| ;
  4511.             Req("First Name Required", ;
  4512.                 WinBott()-1,WinLeft()+2,WinRight()-
  4513.   2,Var(WERR_CLR_))}
  4514.      @ 03,08 WINGET BLNAME PICTURE "!xxxxxxxxxxxxxxxxxxx"
  4515.      @ 05,08 WINGET BPHONE PICTURE "@R (999) 999-9999"
  4516.  
  4517.      IF cG_Func$"AC"
  4518.         ReadGets(@GetList)
  4519.      ENDIF
  4520.      RETURN(NIL)
  4521.  
  4522.   VI.  TBrowse.
  4523.  
  4524.                                            Page: 105
  4525.  
  4526.   The Builder TBrowse procedures initialize a Clipper TBrowse
  4527.   object, adding a two dimensional 'dictionary' array of
  4528.   additional items to the :cargo instance variable.  Likewise
  4529.   each column object is initialized with a similar 'dictio
  4530.   nary' added to its :cargo instance variable.  These
  4531.   'dictionary' arrays allow add functionality to these
  4532.   objects.  The controls are all entered by Builder (except
  4533.   the "BNDKEYS" and "ORDEXCPT" values) and are used by the
  4534.   Builder BrowseDb() function.
  4535.  
  4536.   In the source code, first a number of local variables are
  4537.   declared to hold the window dimensions, sundry items,
  4538.   objects, dictionary arrays, and saved system values.
  4539.  
  4540.   If a Help system has been incorporated into your system, a
  4541.   VarPush() is executed to tell Help what to display.
  4542.  
  4543.   The window coordinate variables are initialized.
  4544.  
  4545.   The database to be browsed is selectec as the default work
  4546.   area and the index order is established.
  4547.  
  4548.   The browse object dictionary array is initialized, followed
  4549.   by initializing a TBrowse object.
  4550.  
  4551.   Each column in the TBrowse is initialized by first setting
  4552.   its dictionary array and then initializing the column
  4553.   object.  The column object is then added to the browse
  4554.   object.  This is repeated for every column on the browse.
  4555.  
  4556.   After the browse object is initialized, a window is
  4557.   displayed on the screen.
  4558.  
  4559.   Then a DO WHILE loop is executed in which a message line is
  4560.   displayed, the browse ojbect's mouse controls are set up,
  4561.   and the browse is performed.  If the browse function returns
  4562.   a logical FALSE (ESC key pressed) the loop is exited and the
  4563.   procedure terminated.  If the browse function returns a
  4564.   logical TRUE (Ctrl+ENTER key pressed), the browse object's
  4565.   mouse controls are turned off and the next window procedure
  4566.   is executed.
  4567.  
  4568.   ************************************************************
  4569.   *******************
  4570.   ** CALLED BY: Hand Code:  HAND149   Position TBrowse
  4571.   Database                **
  4572.   **   Comment: TBrowse Demo
  4573.                  **
  4574.   ************************************************************
  4575.   *******************
  4576.   PROCEDURE Brws146()
  4577.      LOCAL nBr1,nBc1,nBr2,nBc2
  4578.  
  4579.                                            Page: 106
  4580.  
  4581.      LOCAL x,xBound,nDisplayRow
  4582.      LOCAL oBrwObj,oColObj
  4583.      LOCAL aBrwCtrls := {},aColCtrls := {}
  4584.      LOCAL cOldColor := SETCOLOR(Var(BRWS_CLR_))
  4585.      LOCAL cDbStatus
  4586.  
  4587.      VarPush("BRWS146")
  4588.  
  4589.      nBr1 := 07
  4590.      nBc1 := 12
  4591.      nBr2 := nBr1+12
  4592.      nBc2 := nBc1+55
  4593.  
  4594.      DBSELECTAREA("Cities")
  4595.      Cities->(DBSETORDER(2))
  4596.  
  4597.      // Add Browse Controls to a Control Dictionary
  4598.      DictPut(aBrwCtrls,"FREEZE",.T.)      // Freeze Control
  4599.      DictPut(aBrwCtrls,"DELETE",.T.)      // Delete/Recover
  4600.   Control
  4601.      DictPut(aBrwCtrls,"AWIDTH",.T.)      // Adjust Column
  4602.   Width Control
  4603.      DictPut(aBrwCtrls,"CHGORD",.T.)      // Change Index
  4604.   Order Control
  4605.      DictPut(aBrwCtrls,"IDXSRC",.T.)      // Index Search
  4606.   Control
  4607.      DictPut(aBrwCtrls,"APPEND",.F.)      // Append Records
  4608.   Control
  4609.      DictPut(aBrwCtrls,"APPVAL",.F.)      // Append Mode
  4610.   Variable
  4611.      DictPut(aBrwCtrls,"RECNBR",.T.)      // Record Number
  4612.   Visible @Start
  4613.      DictPut(aBrwCtrls,"RECTGL",.T.)      // Record Number
  4614.   Column Toggle Control
  4615.      DictPut(aBrwCtrls,"DELREC",.F.)      // Delete Database
  4616.   Record Control
  4617.      DictPut(aBrwCtrls,"BOUNDS",NIL)      // Bounded by Block
  4618.      DictPut(aBrwCtrls,"HGLTBAR",NIL)     // Highlight Bar
  4619.   Color Pair
  4620.      DictPut(aBrwCtrls,"BNDPFX",NIL)      // Bounded by Prefix
  4621.      DictPut(aBrwCtrls,"BNDKEYS",NIL)     // Bounded by Key
  4622.   Init
  4623.      DictPut(aBrwCtrls,"ORDEXCPT",{})     // Idx Orders to X
  4624.   from List
  4625.  
  4626.      // Initialize the TBrowse Object
  4627.      oBrwObj := TBrowseDb(nBr1+1,nBc1+1,nBr2-2,nBc2-1)
  4628.      oBrwObj:cargo := aBrwCtrls
  4629.      oBrwObj:goBottomBlock := {||AbGoBottom(oBrwObj)}
  4630.      oBrwObj:goTopBlock := {||AbGoTop(oBrwObj)}
  4631.      oBrwObj:skipBlock := {|x| AbTBSkip(x,oBrwObj)}
  4632.      oBrwObj:colorSpec :=
  4633.  
  4634.                                            Page: 107
  4635.  
  4636.   Var(BRWS_CLR_)+","+Var(BRWS_HL1_)+","+Var(BRWS_HL2_)
  4637.      oBrwObj:headSep := "---"
  4638.      oBrwObj:colSep  := " | "
  4639.      oBrwObj:footSep := "---"
  4640.  
  4641.      // Add Column Objects to the TBrowse Object
  4642.      aColCtrls := {}
  4643.      DictPut(aColCtrls,"EDITABLE",.F.)
  4644.      DictPut(aColCtrls,"PICTURE",NIL)
  4645.      DictPut(aColCtrls,"COLNBR",1)
  4646.      DictPut(aColCtrls,"VALID",NIL)
  4647.      DictPut(aColCtrls,"EXECBLK",NIL)
  4648.      DictPut(aColCtrls,"GETBLK",FIELDBLOCK("CITY"))
  4649.      oColObj := TBColumnNew("City", ;
  4650.         {||Cities->City})
  4651.      oColObj:cargo := aColCtrls
  4652.      oBrwObj:addColumn(oColObj)
  4653.  
  4654.      aColCtrls := {}
  4655.      DictPut(aColCtrls,"EDITABLE",.F.)
  4656.      DictPut(aColCtrls,"PICTURE",NIL)
  4657.      DictPut(aColCtrls,"COLNBR",2)
  4658.      DictPut(aColCtrls,"VALID",NIL)
  4659.      DictPut(aColCtrls,"EXECBLK",NIL)
  4660.      DictPut(aColCtrls,"GETBLK",FIELDBLOCK("STATE"))
  4661.      oColObj := TBColumnNew("State", ;
  4662.         {||Cities->State})
  4663.      oColObj:cargo := aColCtrls
  4664.      oBrwObj:addColumn(oColObj)
  4665.  
  4666.      // Put a Window on the Screen
  4667.      @ nBr1,nBc1,nBr2,nBc2 WINDOW STYLE "3+"
  4668.  
  4669.      // Add Some Other Display Items
  4670.      nDisplayRow := oBrwObj:nBottom - oBrwObj:rowCount - 1
  4671.  
  4672.      // Execute the Browse
  4673.      DO WHILE .T.
  4674.         SetMsgLin("_ Arrows/PgUp/PgDn-Move _ ENTER-Edit _
  4675.   Alt+M-Menu _ Ctrl+ENTER-Next _ ESC-Exit _")
  4676.         BrwMouse(nBr1,nBc1,nBr2,nBc2,oBrwObj)
  4677.         IF !BrowseDb(oBrwObj,,4)
  4678.            EXIT
  4679.         ENDIF
  4680.         cDbStatus := DbState()
  4681.         BrwMouse()                                 // Mouse
  4682.   Pads Off
  4683.         Rmnt145()
  4684.         DbState( cDbStatus )
  4685.      ENDDO
  4686.      BrwMouse()                                 // Mouse Pads
  4687.   Off
  4688.  
  4689.                                            Page: 108
  4690.  
  4691.      SETCOLOR(cOldColor)
  4692.      WINDOW REMOVE   // Remove Window from Screen
  4693.      VarPop()
  4694.  
  4695.   VII.  Pick List Boxes.
  4696.  
  4697.   A typical BUILDER picklist procedure looks like the
  4698.   following:
  4699.  
  4700.   ************************************************************
  4701.   *******************
  4702.   ** CALLED BY: Hand Code:  HAND102   Picklist No Options
  4703.   Setup                **
  4704.   **   Comment: No Options Picklist
  4705.                  **
  4706.   ************************************************************
  4707.   *******************
  4708.   PROCEDURE Plst027()
  4709.      LOCAL nPr1,nPc1,nPr2,nPc2,cDisp
  4710.  
  4711.      nPr1 := 11
  4712.      nPc1 := 22
  4713.      nPr2 := nPr1+09
  4714.      nPc2 := nPc1+44
  4715.  
  4716.      VarPush("PLST027")
  4717.  
  4718.      SETCOLOR(Var(WNDW_CLR_))
  4719.  
  4720.      cDisp := 'Transform(Zip,"@R 99999 99999")+" "+State+"
  4721.   "+City'
  4722.  
  4723.   Plist(nPr1,nPc1,nPr2,nPc2,"CITIES",1,cDisp,.F.,"","",{||Hand
  4724.   032()})
  4725.  
  4726.      *#SNAPCODE HAND032()
  4727.  
  4728.      VarPop()
  4729.  
  4730.   This one creates a window at row 11 column 22 to row 20
  4731.   column 66. It scrolls the 'CITIES database displaying the
  4732.   fields ZIP, STATE, and CITY.  The fields will be displayed
  4733.   organized according to index order one (1).  The QWERTY
  4734.   scroll is disabled.  QWERTY field blank.  Uses default
  4735.   reverse color.  The function 'HAND032' is called when the
  4736.   ENTER key is  pressed.
  4737.  
  4738.   Picklists seem to be the area of BUILDER most people have
  4739.   difficulty understanding.  Picklists are difficult to learn,
  4740.   but once mastered, very quick to setup.  The BOUNDED BY and
  4741.   QWERTY SCROLL features seem to cause the most problems.
  4742.   Take your time and study how each parameter works, the call
  4743.                                            Page: 109
  4744.  
  4745.   to the picklist function may be only one line of code but
  4746.   setup is very exacting.
  4747.  
  4748.   The #SNAPCODE HAND039 is to tell SNAP! how to proceed in
  4749.   documenting the program flow.  If you do not know about the
  4750.   SNAP! program GET A COPY.  It is a Shareware program written
  4751.   by an ASP member and will produce more system level
  4752.   documentation than any MIS manager would ever dare ask for.
  4753.   Highly recommended.
  4754.  
  4755.   VIII.  File Maintenance Boxes.
  4756.  
  4757.   File maintenance procedures are included in the source code
  4758.   only if at least one file maintenance box is defined to the
  4759.   BUILDER prototype.  These are arranged to call the generic
  4760.   file maintenance procedure, see the documentation on the
  4761.   GEN_MAINT() func for further details.
  4762.  
  4763.   IX.  Index Checking.
  4764.   ChkNtxs()
  4765.  
  4766.   The procedure CHK_NTXS is created to verify the existence of
  4767.   all indexes (entered in Files/Edit Databases USEd), if an
  4768.   index exists nothing happens, if it does not it is created.
  4769.   This eliminates the need to put 'Index' or 'Reindex' menu
  4770.   options on application menus.  I have found the Clipper .NTX
  4771.   structure so solid that periodic reindexing is not needed.
  4772.  
  4773.   X.  Database and Index File Opens.
  4774.  
  4775.   Next in the source code is the procedure OpenFiles() which
  4776.   opens all application database and index files.
  4777.  
  4778.   XI.  Help System.
  4779.  
  4780.   If you incorporated a help system into your application the
  4781.   procedure HELP will be the last in the source code file.
  4782.   This procedure handles all F1-Help logic.  See the chapter
  4783.   on the Help System for more information.  This is added to
  4784.   Summer '87 style source code only, Clipper 5.x style source
  4785.   is able to use a library function for the help system.
  4786.                                                 Page: 110
  4787.   APPENDIX C - Files Created by BUILDER
  4788.  
  4789.   OPTIONS.DBF
  4790.   HELP.DBF   HELP.DBT, HELP1.NTX
  4791.   FILES.BLD  FILES1.BLX,    FILES2.BLX
  4792.   WINDOWS.BLD     WINDOWS1.BLX,  WINDOWS2.BLX,  WINDOWS3.BLX
  4793.    WINDOWS4.BLX
  4794.   ELEMENTS.BLD    ELEMENT1.BLX,  ELEMENT2.BLX,  ELEMENT3.BLX
  4795.   PICKLIST.BLD    PICKLIST.BLX
  4796.   VALIDS.BLD VALIDS1.BLX
  4797.   HANDCODE.BLD    HANDCODE.BLT,  HANDCOD1.BLX
  4798.   BDCTFIL.BLD     BDCTFIL1.BLX
  4799.   BDCTFLD.BLD     BDCTFLD.BLT,   BDCTFLD1.BLX,  BDCTFLD2.BLX,
  4800.    BDCTFLD3.BLX
  4801.   BDCTVLD.BLD     BDCTVLD1.BLX
  4802.  
  4803.   The .BLD files are created by BUILDER.EXE in standard
  4804.   Clipper .DBF format that you could USE in any xBASE system.
  4805.   The .BLT files are Clipper compatible .DBT files.  The .BLX
  4806.   files are standard Clipper .NTX format files that you could
  4807.   use in Clipper.  The .BL? extension files are intended to be
  4808.   used only by BUILDER and have no use to the finished
  4809.   application.
  4810.  
  4811.   A duplicate of each .BLD file will be created by BUILDER on
  4812.   each entry into the BUILDER program.  They will be copied to
  4813.   the same filenames but with the extension .BKD.  In the
  4814.   event of a power failure or a similar computer tragedy, your
  4815.   last BUILDER session is backed up.  Note that OPTIONS.DBF,
  4816.   HELP.DBF, and HELP.DBT are not backed up at all.
  4817.  
  4818.   OPTIONS.DBF     - This file is a one record database that
  4819.   contains all the defaults needed by the application.  After
  4820.   this file is created you can add fields of your own if you
  4821.   require additional default values for your application,
  4822.   however, be sure you don't delete any fields as this may
  4823.   render your application or BUILDER inoperative.
  4824.  
  4825.   HELP.DBF/.DBT   - Help file, created for *all* BUILDER
  4826.   applications, even if a Help System is NOT to be incorpo
  4827.   rated.  See the section on the Help System for more detailed
  4828.   information.
  4829.  
  4830.   FILES.BLD  - contains the list of databases and indexes your
  4831.   application will use.
  4832.  
  4833.   WINDOWS.BLD     - each record defines by boundaries of a
  4834.   window and where in the application the window belongs.
  4835.  
  4836.   ELEMENTS.BLD    - each record contains a display/GET element
  4837.   used in a window.
  4838.  
  4839.                                            Page: 111
  4840.  
  4841.   PICKLIST.BLD    - each record contains the detail needed to
  4842.   create a picklist.
  4843.  
  4844.   VALIDS.BLD - each record in this file contains the data
  4845.   needed to create a VALID clause specified for a GET.
  4846.  
  4847.   HANDCODE.BLD    - each record contains one hand code
  4848.   function's source statements.
  4849.  
  4850.   BDCTFIL.BLD     - each record contains a database definition
  4851.   that is used in the BUILDER data dictionary.
  4852.  
  4853.   BDCTFLD.BLD     - each record contains a database field
  4854.   definition that is used in the BUILDER data dictionary.
  4855.  
  4856.   BDCTVLD.BLD     - each record contains a valid definition
  4857.   that is used in  the BUILDER data dictionary.
  4858.  
  4859.   The reason .BLD, .BLT, and .BLX are used for the BUILDER
  4860.   files is to make it easier to copy the generated application
  4861.   when it is finished. You need only copy the .DBFs and the
  4862.   .EXE(s) to give the application to your user.
  4863.  
  4864.  
  4865.