                  d   U      U   FFFFFFF  L        PPPPPPP
                  d   U      U   F        L        P     P
                  d   U      U   FFFFFF   L        PPPPPPP
            ddddddd   U      U   F        L        P
            d     d   U      U   F        L        P
            ddddddd   UUUUUUUU   F        LLLLLLL  P

                              README.TXT
                  For the dUFLP LIBRARY Files (attached)
             (dUFLP = dBASE Users' Function Library Project)
                            **************
                            Version PLUS_T
                            **************
           for dBASE Plus, dBASE SE, dB2K and Visual dBASE 7.x 

This library system is freeware (no charge). Note that while the code
is free, it is requested that you leave the names of the developers
who created the code in the source code headers and such -- credit
belongs where it is due. Please do not take credit for someone else's
work, even if it is free.

This file (README.TXT) is small description for the attached files. 
This library started as a simple procedure file in dBASE IV, 1.1. 
It has grown over the years to a substantial library of code.

*********************************************************************
                          IMPORTANT NOTE:
*********************************************************************
This has been updated for dBASE Plus -- the latest version of dBASE 
from dataBased Intelligence, Inc. Note that code that runs in VdB 7.x 
should run fine in dBASE Plus. However, some code written for dB2K or 
dBASE Plus may not run in VdBASE 7.5 or earlier (in other words, not 
everything is backward compatible).

***********************************************************************
**** IF YOU HAVE A QUESTION, BUG REPORT, OR ADDITION TO THE dUFLP,
**** PLEASE send an email to the library at: ken@goldenstag.net
***********************************************************************

-----------------------------------------------------------------------
                       NEW TO THE dUFLP LIBRARY?
-----------------------------------------------------------------------
If you are new to the dUFLP, you need to know some basics, such as
how to set things up, and get around in it. The following are the 
basics:

Create a folder on your hard drive, such as:

   C:\dUFLP

Unzip the file you downloaded (with a filename such as: dUFLPPlus_T.zip),
and extract the contents to the folder above. (You will need software
such as WinZip or PKUNZIP for Windows ...)

Once you have done this, start dBASE and use the Navigator to point
to that folder (use the "Look in:" combobox at the top of the
Navigator). 

        ----------------------------------------------
               You can do the simple way:
    (in the Command Window)

       do setup.prg

    (or double-click this in the Navigator)

        ----------------------------------------------
                OR the more complicated way:

Click on the "Programs" tab, and double-click on this file to
create the Source Alias for the dUFLP:

   SetupSourceAlias.prg

Once you have done that, after you start dBASE again, you may want
to run the program (double-click on it): 

	ComponentPaletteUpdate.prg

So that when you decide to use some of the visual controls that
are contained here, they will appear on the Component Palette of
dBASE properly. (Note that this will not harm anything in your
dBASE setup, it simply adds some information to a special table
that is used by dBASE to know what icons to display for controls,
and what tabs to place them on.)

You will want to copy all .h files in the dUFLP folder to the "INCLUDE" 
folder under the dBASE folder, i.e.,

         c:\Program Files\dBASE\Plus\Include

-----------------------------------------------------------------------

Finally, to get a sense of what is contained in this library, you 
should change the tab in the Navigator to "Forms", and find the
one called "Library.wfm" -- double-click this file. This will
run a form that shows you what is in the library, allows you
to search the library, and even open the source code files in
the Source Code Editor of dBASE.

-----------------------------------------------------------------------
-----------------------------------------------------------------------

** You may call programs in the dUFLP library from 
** your own code using the source alias in the 
** following fashion:
**    do :dUFLP:someprogram
**    do :dUFLP:someform.wfm
**    set procedure to :dUFLP:someclass.cc additive
**    etc.

**********************************************************
***** USING DEO WITH THE dUFLP LIBRARY'S SOURCE CODE *****
**********************************************************
Yes, you can use DEO (Dynamic External Objects) with 
these files. However, if you do not deploy all related 
files (example below) to somewhere in your DEO path
structure, then your application will not be able to
run. The Source Aliasing is IGNORED in a compiled
executable ...

An example: 
You want to deploy an application using INI.CC.
You include INI.CC in one of the folders defined
by a DEO path. You run the application but when it
starts, it complains that it can't find:

   :dUFLP:SetProc.prg

That's because Source Aliases are ignored in the runtime
environment, and it sees this as a path to a non-existant
file. Even if the machine your are testing this on has
the Source Alias "dUFLP", it will be ignored. What you
need to do is copy the file "SetProc.prg" to one of
the folders defined by a DEO path (see online help
for more details on this). In addition, you will want
to deploy to one of these paths the file StringEx.cc.

To assist, the heading comments of most or all of the
source files in the dUFLP library should list all
files that they use and should be deployed (usually
under the term "Dependencies").

**********************************************************
*** Using HEADER files (.h) ******************************
**********************************************************
NOTE: Some of the files in the dUFLP rely on "header" files, or
".H" files -- files that have a .H for the extension -- these
are referenced by a #INCLUDE statement usually toward the beginning
of the file.

It is a good idea to copy all .H files to the dBASE\Plus\Include
folder, so that the appropriate header file can always be found
when compiling files. If you tried, for example:

   compile :dUFLP:CustButt.cc

And you were not actually in the dUFLP folder, an error would
occur about not finding the file "CustButtEnglish.h". If you
copy that file to the folder as noted above, dBASE CAN find it,
and no error will occur. If you copy all .H files in the dUFLP
folder to the one specified, you will have less problems of
that sort. (For what it's worth, the SETUP.PRG file will
do this for you!)

************************
*** Regarding BDE4API.H:
************************
** If a routine requires the use of BDE4API.H, this is
** installed in the Plus\Samples folder, copy it
** to the Plus\Include folder (or your local
** application's source code folder) and the routine
** should work properly. (For what it's worth, the SETUP.PRG 
** file will do this for you!)


***********************************************************************
*** Visual dBASE, dB2K, dBASE Plus, and dBASE SE are registered    ****
*** trademarks(tm) of dataBased Intelligence, Inc.                 ****
***             see: http://www.dataBI.com/default.asp             ****
***                  http://www.dbase.com                          ****
***********************************************************************

***********************************************************************
**** IF YOU HAVE A QUESTION, BUG REPORT, OR ADDITION TO THE dUFLP,
**** PLEASE send an email to the library at: ken@goldenstag.net
***********************************************************************

=======================================================================
                      CONTRIBUTORS TO THE LIBRARY
=======================================================================
Please read CONTRIB.TXT and DHUNG2.TXT for details. This is very 
important to all of us. Thank you.


=======================================================================
                             DISTRIBUTION
=======================================================================
All code in this library is public domain. We ask that if you use any
of these routines with your systems, you include in your source 
code ALL of the header at the beginning of each routine, including 
(ESPECIALLY) the name of the programmer (Credit should go where it's 
due, after all). 


=======================================================================
                WHERE TO FIND UPDATES TO THIS LIBRARY
=======================================================================
Updates are published whenever I can get around to it. Life being
busy, hectic, and uncertain at the best of times ... It can be found at:

   http://www.goldenstag.net/dbase

This of course assumes that I haven't changed my domain name,
but at the time of the latest modifications to this file,
this site is correct.

In all cases, the name of the file should be  DUFLPPLUS_x.EXE  
where 'x' is a letter. (I.e., the first version of this library would 
be dUFLPPLUS_A.exe) (Versions before dBASE Plus was released
were named differently, such as dUFLPdB2Kx.exe)

NOTE: WHATS.NEW (a text file in this library) -- describes (hopefully) 
the additions and/or updates to the library from the previous release.

Also run the form LIBRARY.WFM for details on what is available in the
library (this is searcheable).


=======================================================================
                       HOW TO REACH THE LIBRARIAN
=======================================================================
This is a set of dynamic files -- they're always changing. Please feel
free to send me comments and/or suggestions on ways to better it (which
includes new code, and suggestions to make the code
here better). Try the following email address (this is current
as of this posting of the library):

   ken@goldenstag.net

If you have problems with the code here, please attempt to contact
the author (not the librarian), or use the dataBI, Inc. FREE newsgroups, 
specifically the dbase.codelib newsgroup.


=======================================================================
                            DISCLAIMERS 
=======================================================================
This library of code is provided "as is" -- no guarantees are implied
that it will work for any specific situation, and the author(s) and
librarian are not responsible for any data-loss incurred by the use
of code contained in this library. (In addition, the librarian
has not tested all of the code in this library to ensure functionality.)


=======================================================================
                              PROBLEMS
=======================================================================
Problems with individual classes and/or methods of classes should be 
addressed, if possible, to the author (note the 'Programmers' listed 
in the internal documentation for each routine). If you cannot reach 
them, contact the librarian as noted above and he will see what 
he can do, or post a query in the dBASE newsgroups. The author
may be visiting the newsgroups on a regular basis (hopefully) and
you can get help from them there. NOTE: Please do not use an author's
name in the subject of a message posted in the newsgroups -- instead
mention the routine you are having problems with ...

You can also ask for assistance in the dBASE.codelib newsgroup provided
by dataBased Intelligence, Inc.

***********************************************************************
**** IF YOU HAVE A QUESTION, BUG REPORT, OR ADDITION TO THE dUFLP,
**** PLEASE send an email to the library at: ken@goldenstag.net
***********************************************************************


=======================================================================
                             INSTRUCTIONS
=======================================================================
The instructions for these custom classes are in the headers of each
class (open the file on the source editor to read the comments).

In the case of the Non-UI classes, you should instantiate the
class, and when done using it, you should issue the explicit release()
method for these classes. The release method for these will release
any other classes that were loaded when you created an instance of the
first. As an example, the Table class will load an instance of the 
FileEx class, and the Index class. The release method will handle
releasing these instances, unless they had already been instantiated.

    oTable.release()
    oTable = NULL    // releases the object reference,
                     // but leaves the property "Table"
                     // set to "NULL" ... no way to completely
                     // remove it, but at least the reference
                     // is gone.
    release oTable   // sometimes helps

In addition, detailed instructions for each method in the Non-UI 
classes are given in the headers for each of the methods.

In the case of the UI classes, the .CC file contains a set of related
classes. Check the instructions in the header for what is there,
and instructions in the header for each class on how to use that
class.

When deploying an application using the code in the dUFLP library,
make sure you deploy any other files that are used -- check the
comments in the beginning of the source -- there is usually, if not
always, a listing of all files that might need to be deployed.

**********************************************************************
In all cases, check the header of the files for instructions,
I have attempted to include any instructions that I can, based
either on author feedback, or having tinkered with the files
myself ... -- KJM
**********************************************************************


=======================================================================
               OTHER USEFUL SOURCES OF INFORMATION/CODE
=======================================================================

-----------------------------------------------------------------------
INTERNET SOURCES:
-----------------------------------------------------------------------
dataBased Intelligence, Inc. has a set of technical support news groups. 
For details on these you should use the dataBI web site:  

   http://www.dataBI.com/default.asp

The newsgroups are at:

   news.dbase.com

-----------------------------------------------------------------------
The dBASE Developers Bulletin (a free online developer's newsletter, 
updated when enough articles are available, and the 'publisher' has 
time to get it out the door ...) is available from a few sites
world-wide:

Canada        http://www.jpmartel.com/bulletin.htm
France        http://www.fghoche.com/dbulletin/bulletin.html
Germany       http://www.tnm.de/dBulletin/bulletin.html
Italy         http://www.intrasoft.it/db2kit
New Zealand   http://www.compkarori.com/dbase/1/bulletin.html
South Africa  http://www.dbase.co.za/resource/dbulletin/bulletin.html
Sweden        http://www.sakia.se/dbulletin/bulletin.html
U.S.A.        http://www.staubassociates.com/dbase/bulletin.html

-----------------------------------------------------------------------
As websites change a lot, the list of developer's websites has
been removed from this document. Instead, please see the dbase web
ring at:

   http://www.fghoche.com/dbasering.htm

-----------------------------------------------------------------------
Michael Nuwer is updating tutorials, and adding items for tutorials
at his own website, you may want to try to keep up with these at:

dBASE Online Training:
http://www.nuwermj.potsdam.edu/dLearn

The dBASE Tutorial:
http://www.nuwermj.potsdam.edu/dLearn/TUTORIAL/index.html

dBASE Tutorial Add-Ons:
http://www.nuwermj.potsdam.edu/dLearn/Tutorial/newIndex01.html

dBASE Reporting Tutorial:
http://www.nuwermj.potsdam.edu/dLearn/reporting/index.html

dBASE Web Applications Tutorial:
http://www.nuwermj.potsdam.edu/dLearn/WEB/index.html
-----------------------------------------------------------------------

-----------------------------------------------------------------------
dBVIPS member pages:
-----------------------------------------------------------------------
   Geoff Wass
      http://members.theglobe.com/Geoff_Wass
   Dan Howard:
       http://www.total.net/~sproket
          Lots of code and such here ...
   Jim Sare
      http://www.jimsare.com
   Jim Sare -- jsNavPro and other code for dBASE Plus
      (Note that Jim seems to have stopped responding to queries
      about dBASE or his library of code ...)
      http://www.jimsare.com/indexLib.htm
	Ken Mayer -- dBASE pages:
      http://www.goldenstag.net/dbase
   Ken Mayer -- dBASE Books:
      http://www.goldestag.net/dbase/dBASEBooks.htm
   Ken Mayer -- Golden Stag Productions -- JOB STUFF:
      http://www.goldenstag.net/GSP
      This is where people can contact me about possible work and
      such, find out what I've done, etc.
   Ken Mayer -- Golden Stag Productions (non-work) page:
      http://www.goldenstag.net/dbase/GSPROD.HTM
      Some source code ... (some of it is fairly esoteric, but it's
      useful for the situations it was designed ...)
   Michael Nuwer (see above for his websites ...)

-----------------------------------------------------------------------
Former dBASE dBVIPS/TeamBer Web Pages:
-----------------------------------------------------------------------
   Romain Strieff:
      http://ourworld.compuserve.com/homepages/RStrieff
   Keith Chuvala:
      http://www.sckans.edu/~kgc/dbase.html
   Bowen Moursund:
      http://lonestar.texas.net/~moursund/
-----------------------------------------------------------------------

=======================================================================
Special Thanks
=======================================================================
To dBVIPS and dBASE TeamB members (past and present) for specific 
assistance/advice (not to mention code) -- others whose names
I've forgotten because I haven't been keeping track ...:

Geoff Wass (dBVIPS)
Dan Howard (dBVIPS)
Peter Rorlick (dBVIPS)
Todd Kreuter (dBVIPS)
Marko Mihorko (dBVIPS)
Gary White (dBVIPS - on Sabbatical)
Jim Sare (dBVIPS, TeamB emeritus -- retired)
Michael Nuwer (dBVIPS)
Ken Mayer (TeamB emeritus -- now dBVIPS)
-----
Alan Katz (TeamB emeritus -- CTO of dataBI, Inc.)
-----
Jay Parsons (TeamB emeritus -- retired)
Angus Scott-Fleming (TeamB emeritus -- retired)
Keith Chuvala (TeamB emeritus -- retired)
Ken Chan (TeamB emeritus -- employee of Inprise/borland.com)
Paul Franks (dBVIPS -- TeamB (JBuilder) -- retired?)
Marilyn Price (TeamB emeritus -- retired)
David Love (TeamB emeritus -- retired)
Rachel Holmen (TeamB emeritus -- retired)
Bowen Moursund (TeamB emeritus -- retired)
Romain Strieff (dBVIPS -- TeamB (JBuilder) -- retired?)
Gary Thoenen (TeamB emeritus -- retired)

Finally, to all those who have donated code to the library over the 
years -- without you, this library wouldn't exist, and wouldn't have
evolved ...

=======================================================================
                          END OF README.TXT
=======================================================================

