
	Hello there dBase Lovers (and haters, but it`s a living!)

This is a demonstration of on-line help for your dBase /// Plus
applications.  It really isn't that difficult to add, but at this
point (I wrote the program at 3:30 am out of necessity) it isn't
blazinlgly (that's a word isn't it?) FAST.  Pages isn't that fast
to setup itself, but once it's setup, it zips along nicely. If
you see any way to improve the speed, by all means try it.  All I
ask is that you acknowledge, either in your source, or in
documentation, where you got the original program, because it is
copyrighted (Yes, I really have a U.S. copyright on it, as I do
all of my programs) and I spend lots of time putting these things
together so that other people can use them. I would like to
acknowledge Andrew Schulman for his excellent PAGES program, and
leave his address for contributions (he would really like $15.00,
a small price to pay for anything) for his work, although it is
'shareware'.  You can write him (or send a check to him) at this
address: 12 Humboldt St. Cambridge, MA 02140. Thanks Mr.
Schulman. I would also like to acknowledge H.M. Van Tassell of
Watchung, NJ for SAVEREST.BIN, an excellent screen saver and
restorer.  Without the aid of these 2 excellent works, I could
never have implemented this in 1 hour.

Program Description:

	The source code (HELP.SRC) tells all of my `secrets'
throughout it, but maybe I should explain some things anyway. 
There are several key variables involved in the use of HELP in
your own programs.  A detailed description follows:

RC_UPDATE	-	THIS VARIABLE IS MY DBASE /// PLUS UPDATE FLAG.
IT'S VALUE IS 256, AND IT IS SETUP WHENEVER YOU DO A READ AND THE
USE ENTERS ANYTHING IN ANY OF YOUR GET FIELDS.  MORE IN A BIT.

HELPKEY - THIS IS THE VALUE (36) THAT READKEY() RETURNS AFTER
EXITING THE READ. NOTE THAT F1 (HELP) IS A SPECIAL VALUE TO
dBASE; YOU CAN NOT SET THIS FUNCTION KEY WITH 'SET FUNCTION TO'. 
IT AUTOMATICALLY EXITS THE CURRENT READ IN PROGRESS, AND PUTS ITS
VALUE IN READKEY(); I.E. READKEY() RETURNS 36 IF NOTHING WAS TYPE
BY THE USER DURING THE GET, AND IT RETURNS 292 (36+256 OR 36
+RC_UPDATE) IF THE USER DID TYPE SOMETHING BEFORE THE READ WAS
EXITED.

HELPFILE - THIS IS THE NAME OF THE TEXT FILE THAT YOU WANT HELP
(AND THEREFORE PAGES) TO USE WHEN IT IS CALLED. YOU CAN MAKE THIS
ANY THING YOU WANT AS LONG AS IT ENDS WITH .TXT.

HOWHIGH - THIS IS THE HEIGHT OF THE HELP WINDOW THAT YOU WANT TO
DISPLAY IN LINES RANGE 1-24.

FIRSTLINE - THIS IS THE FIRST LINE OF THE SCREEN THAT YOU WANT
HELP DISPLAYED ON. IT MUST BE IN THE RANGE OF 0 (REMEMBER, THAT
IS THE FIRST LINE OF THE SCREEN TO DBASE) AND 24-HOWHIGH.

PGINFOLN - THIS IS THE LINE THAT YOU WANT 'Page x of x' DISPLAYED
ON. RANGE 0,24.


There are two other variables that PAGES uses that I will Explain
to you because you might want to try and use them.  SWITCH_OK
determines if the user is allowed to switch to another file. Use
this with caution, who knows what they get their prying eyes on!
The other is SHOWPAGE, which determines what line a page ruler
will be displayed on, or will be set to 0 for no ruler. I don't
use it, but then again, who am I? (That's one my folks have been
trying to answer for most of my 21 years, who is this strange
person who is writing strange things at 4:30 in the morning.  But
doesn't everybody work until 7 am and then go to WORK at 8:30?)
But, now that I have digressed from the subject at hand, let's
return to it (Great Grammar.)  

There are many notes that I have included in the source, but if
you still have questions as to how to use the main procedure
(GET_HELP) in your own programs, please feel free to write me at
Memory Technologies, Inc. 3210 North Second Street, Harrisburg,
PA 17110 ATTN:Jeff.  I'll try to help you out.

I'd like to add some comments to people who may use this in the
programs that they develop.  In the past, we have seen many
situations where a user did not know where to look on the screen
for certain vital information, because it constantly changed. 
This causes confusion on the end-user's part, and leaves the
developer with more questions to answer needlessly.  This program
was developed to help them as much as possible, and therefore I
must recommend that you use it wisely.  Don't get carried away
with windows and place them all over the screen; place them in
one place and use that same place throughout your program.  It
makes it easier for everyone, and is a good start toward a
consistent user interface.  Do the same with Error messages, and
with confirmations of user actions, and the learning curve of
your programs is greatly reduced.  I'm not trying to sound like
an authority on the subject, but the reason this whole project,
(and in the end, this program) was created was because a local
dBase programmer wrote a package for a company, but the employees
were having a great deal of trouble learning it, and became
afraid of making mistakes.  Eventually, he lost the contract and
I picked it up.  It was a fantastic (no exaggeration) piece of
work, but it needed a simple user interface.  It wasn't really
that complicated, but it seemed like your were learning to
'program' the thing.  I rewrote it, then wrote 17 (as compared to
his 321) pages of documentation, and have received a total of 2
phone calls concerning problems since it was installed.  Now do
you see the power of a good user interface?

	Sorry for the little dissertation, but that is one problem
that I often see that is readily curable.

						Jeff Fortney
						Memory Technologies, Inc.
						Harrisburg, PA
						(717)-975-0707

