FNKSHN (pronounced function) foxpro library version 1.01
copyright (c) 1996 perry fect
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
frequently asked questions.
WHAT IS FNKSHN?
FNKSHN is a set of freely distributable functions and utilities that i
have developed in foxpro 2.6 over the past couple of years to ease the
development process. i'm constantly writing new FNKSHNs and updating
the old ones (with backward compatibilty of course). most are intended
for use in projects and some are for use in the command window for
debugging. all of them were written using native foxpro code and many
are very powerful. among them are:
* improved version of a "view" that saves and restores record
positions and exclusive status (SAVEVIEW and LOADVIEW).
* open and close functions for dbfs that also register "use counts"
on the dbf to perform logical opens and closes. (ROPNFIL and
* an array browser (ABROWSE).
* dialog and alert boxes which utilitize the windows' msgbox()
function if foxtools.fll is available or native fox code if it is
not (ALERTMSG, YESNO, and DLGBOX).
* project zipper (PROJZIP).
* INI file reader and writer (GETENTRY and SETENTRY)
all of them are black boxed (self contained) and need no external
variables to be set to run them. some of them do require other FHKSHNs
WHAT VERSION OF FOXPRO DOES FNKSHN WORK IN?
it has only been written and tested in foxpro 2.x dos and foxpro 2.6
windows 3.1 versions. but i did try to make them as backward compatible
as possible. i know that many FNKSHNs will work in foxpro 2.0 but some
are incompatible. FNKSHN will work in visual foxpro also but i am
working on OBJECT FNKSHN 96 which will be written especially for visual
HOW DO I SET UP FNKSHN?
all you have to do put the FNKSHNs in a directory that is accessable
through fox's path. for example, in my CONFIG.FP i have:
when i make a project and call one of my FNKSHNs, the project pulls it
in because it finds it in my path.
DO I NEED TO REGISTER FNKSHN?
not at all. you are free to use and distribute FNKSHNs under the terms
of the free software foundation's general public library license. you
should have received a copy of the file LICENSE.TXT with your copy of
FNKSHN. if you did not, you can email me (perfe...@callnet.com) for the
official version of FNKSHN. if you are distributing an application that
makes call to any FNKSHNs, you must make FNKSHN available to the
recipients and also make them aware of their rights to freely copy,
modify and distribute FNKSHN. you must also make available complete object
files to the recipients so that they can relink them with FNKSHN, after
making changes to FNKSHN and recompiling it. for more on this, read the
terms and conditions of the general public library license.
WHY IS ALL THE SOURCE CODE IN ONE BIG FILE?
just because that's the way i copyrighted it. the source code files are
also available individually by FNKSHN. if you can't find them where you
downloaded this version you can email me at perfe...@callnet.com.
WHAT ABOUT TECH SUPPORT?
tech support is free. there's a catch though. support is only
available through email or snail mail. my current email address is
perfe...@callnet.com. if for some reason my email address goes down you
can write me at the address below.
WHERE DO I SEND SUGGESTIONS, COMMENTS, OR BUG NOTICES?
either my email address or the address below.
DO YOU ACCEPT DONATIONS?
of course, all donations are greatly appreciated. the address to send
donations to is shown below. if you can't afford to send a donation,
send something else. like an interesting program or some pictures or
just a letter to say hello. any kind of friendly response shows me that
you like what i'm doing and i'm not wasting my time.
po box 320411
fairfield, ct 06432
OTHER COMING ATTRACTIONS:
* FNKSHN 1.1: an update to FNKSHN with improvements to existing FNKSHNs.
* OBJECT FNKSHN 96: this is the object oriented version of FNKSHN. this
will come in the form of a VCX and will have a potpourri (sp?) of
visual and non-visual classes. i expect to have version ready in early
* FNKSCRNX: this is for all the 2.x-ers out there. this will be a
compilation of all the special genscrnx drivers i've written in the
past. for example, i have a more "windowsy" popup for the dos version
of foxpro that takes up less space than the built in one. i also have
a field inserter for the dos version that allows you to insert fields
or objects in the desired tab order without having to do reorder
fields. and there's more! i hope to have this ready by january '96.
below is a listing of available FNKSHNs and their syntaxes. i apologize
for the appearance below, i ran short on time in making this document so
i just exported the headers from the source code. i tried my best to
categorize the FNKSHNs into the areas they fit best. in the next update
documentation will be more detailed and better organized. the FNKSHNs
marked as unsupported may or may not be included in the updates.
***** ARRAY RELATED FNKSHNS *****
Allows you to browse the contents of an array in a browse. If <expl>
is true, the cursor is kept open, otherwise it is closed.
Places the list of tags into <array>. Defaults to the
current workarea. If <alias> is sent then that alias
AMOVE(@<source array>,@<destination array>,<src row>[,<dest row>])
Moves <src row> from <source array> into <dest row> in <destination
array>. if <dest row> isn't sent the defualt <dest row> is the bottom
of <destination array>. Mainly used for text based arrays.
puts a list of u.s. states and territories into <array>
this procedure returns the row that <item> exists in <array>
Moves the contents of <array> into a cursor. Accepts single
dimensional arrays and also handle type conflicts. Also uses unique
cursor name so it can be called more than once and on multiple arrays.
matches column widths of two arrays by sizing the smaller array to
match the number of columns with with larger array
creates <popup> based on <column> of <array>
at <toprow>, <leftcol> with a size of <height>, <width>.
creates a mover <popup> based on <column> of <array> at <toprow>,
<leftcol> with a size of <height>, <width>. Not supported but works.
appends the contents of array2 into array1 adjusts number of columns
in smaller array if <resize> is .t.
returns maximum length of a string in <column> of <array>. Defaults
to first column if <column> isn't sent.
purges array of empty records
<array1> is the source array and <array2> is the resultant array <key>
is the key column to base the purge on. if there is a .f. in the key
column, the whole row is removed. if only one array is sent then the
resultant array is returned in <array1>
Puts the list of open libraries into <array>
Converts <array> to a 6x7 array representation of a calendar of the
month of <date>.
Calls BOM(), EOM(), VALDTE()
stores each line of a <memo> or a character variable in an <array>.
line length is based on SET MEMOWIDTH setting.
returns .t. if <array> is an array. Not supported
this generates source code to define an array <arrayname> is the name
given to the array in the code
Saves workareas with record positions to <array>. If a comma delimited
<arealist> is sent, then only those aliases are saved.
Calls EXT(), GETINFO(), POPINFO()
Sets up workareas according to <array>. If <arealist> is
sent, where <arealist> is a comma delimited string, then
only those areas are reopened. See SAVEVIEW().
The array structure should look like this:
Calls SAVEVIEW(), GETINFO(), POPINFO()
This registers <item> in a global array called _REGTAB. The first
column holds the item name and the second column holds the number of
times item was used. <action> is the desired action. If <action> is
"OPEN", the second column is incremented. if <action> is "CLOSE" the
second column is decremented. The "SET" paramater can be used to set
the item to a specific number. The "CLEAR" parameter sets the item to
read more »