home *** CD-ROM | disk | FTP | other *** search
- !WIDTH 66
- ;
- !TOPIC 1 Initializing
- TPHELP exports several data types and routines so that a client
- program can easily integrate a help system. The main data type is:
-
- type
- HelpPtr = ^HelpDesc; {The user hook to the help system}
-
- A variable of this type points to a data structure that lets TPHELP
- manage the help system. The client program needs only to declare a
- variable of this type (which uses 4 bytes of space in whatever segment
- it's declared) and initialize it as described below, in order to
- access the help system.
- !PAGE
- TPHELP offers the following two functions to initialize a help system.
- One of these must be called prior to displaying help.
-
- function OpenHelpFile(HelpFileName : string;
- XLow, YLow, YHigh : Byte;
- var Help : HelpPtr) : Word;
- {-Find and open help file, returning 0 or error code, and
- an initialized help descriptor if successful}
-
- function OpenHelpMem(HPtr : Pointer;
- XLow, YLow, YHigh : Byte;
- var Help : HelpPtr) : Word;
- {-Initialize help descriptor for a help structure
- bound into code}
-
- procedure SetHelpPos(Help : HelpPtr;
- XLow, YLow, YHigh : Byte);
- {-Change the position of a help window}
- ;
- ;
- ;---------------------------------------------------------------------
- !TOPIC 2 Displaying
- TPHELP offers three methods of displaying help. You can call one or
- more of them at appropriate places in your program.
-
- function ShowHelp(Help : HelpPtr; Item : Word) : Boolean;
- {-Display help screen, returning true if successful}
-
- function ShowHelpByName(Help : HelpPtr;
- Name : string) : Boolean;
- {-Display help screen for topic with pick name Name}
-
- function PickHelp(Help : HelpPtr;
- XLow, YLow,
- YHigh, PickCols : byte) : word;
- {-Display help pick list, returning Item number,
- or 0 for none}
- !PAGE
- A bit of background: each help topic is referenced by an Item number
- (which ranges from 1 to the maximum topic number) and optionally by a
- topic Name. The Item number and Name for each topic are assigned by
- you in the original text help file.
- ;
- ;
- ;---------------------------------------------------------------------
- !TOPIC 3 Help Compiler
- The text that will eventually be displayed by the help system starts
- out as a text file that you must write. You put directives in that
- text file to tell the help compiler how to format it. You then run the
- help compiler, MAKEHELP, to create a formatted, indexed file that will
- be used by the help system.
-
- Directives are denoted by an exclamation point that appears as the
- first non-blank character on a line, immediately followed by the
- directive name, followed by various options separated by one or more
- spaces. Here is a list of the directives accepted by the help
- compiler.
- ;---------------
- !PAGE
-
- !WIDTH Width
-
- Specifies the number of columns to be occupied by the
- help window, including the frame. The help will eventually be
- displayed with one blank column separating the text from each edge
- of the frame. Thus, the actual width for text is (Width-4)
- columns. If no !WIDTH directive is specified, MAKEHELP assumes
- Width=40.
-
- Because MAKEHELP word wraps the text, the width specification for
- a help system is built into the help file. The width may not be
- changed when the text is later displayed. By contrast, MAKEHELP
- does not automatically paginate the help text, thus allowing help
- screens that can automatically adjust between 25, 43, and 50 line
- text modes.
-
- The !WIDTH directive must appear before the first !TOPIC directive.
-
- Example: !WIDTH 70
- ;---------------
- !PAGE
-
- !TOPIC Item [Name]
-
- Each help topic must begin with a !TOPIC directive. Typically,
- help topics will be entered in ascending numerical order, starting
- with number 1. The !TOPIC directive may also specify an optional
- topic name. The name may contain spaces, and it will later appear
- on-screen exactly as entered in the !TOPIC directive. (The topic
- name appears as the title of the help window, and as an entry in
- the help pick list.)
-
- Examples: !TOPIC 1 First Help Section
- !TOPIC 22
- ;------------------
- !PAGE
-
- !LINE
-
- This directive forces MAKEHELP to finish the current line of text,
- inserting a line break. Since MAKEHELP automatically fills and
- word-wraps the text in your original help file, the line breaks
- in the final help screens are not necessarily the same as those in
- the your text file. The !LINE command gives you appropriate control when
- needed. MAKEHELP also inserts a line break whenever it encounters a
- blank line or a line that begins with one or more spaces.
- ;---------------------
- !PAGE
-
- !PAGE
-
- This directive forces MAKEHELP to finish the current page of text,
- inserting a page break. Normally, page breaks are inserted when
- the help text is displayed, only when the current window has
- filled with help.
- ;---------------------
- !PAGE
-
- You may enter comments in the text file that will not appear in the
- final help. Comments are indicated when a semicolon appears in the
- first column of the text file. Example:
-
- ;ANY TEXT APPEARING AFTER THE SEMICOLON IS IGNORED.
- ;---------------------
- !PAGE
-
- To activate the special text attributes, you insert control characters
- directly into your help text. ^A toggles SpAttr1 on and off, ^B
- toggles SpAttr2, and ^C toggles SpAttr3. The actual control characters
- will not appear in the final help screens. To enter such characters
- using the Turbo Pascal editor, first press <CtrlP>, then hold down the
- control key and press the desired character.
-
- When the special attributes are used in combination, they are applied
- in priority order. SpAttr1 takes priority over SpAttr2, which takes
- priority over SpAttr3.
-
- SpAttr1 has a special purpose as well. The selected topic in the help
- pick menu is displayed in attribute SpAttr1.
- ;
- ;
- ;---------------------------------------------------------------------
- !TOPIC 4 Binding Help
-
- TPHELP will directly read the binary file produced by MAKEHELP.
- However, if the help file is relatively small (definitely less than
- 64K), you may want to link the help file directly into the application
- so that no additional files are required.
-
- You can do this with the aid of the BINOBJ.EXE utility that Borland
- supplies with Turbo Pascal. BINOBJ converts the binary help file into
- a linkable OBJ file that can be bound into your program.
-
- Let's use an example to show how this works. Assume you have a help
- text file named MYHELP.TXT. The first step would be to run
- MAKEHELP.EXE to create the binary help file:
-
- MAKEHELP MYHELP.TXT MYHELP.HLP
- !PAGE
- Then run BINOBJ to create the OBJ file:
-
- BINOBJ MYHELP.HLP MYHELP.OBJ MYHELP
-
- The third parameter to BINOBJ specifies the name of the public
- identifier by which your program can refer to the contents of the OBJ
- file.
-
- Now, within your application program, insert the following lines of
- source code:
-
- {$L MYHELP.OBJ}
- procedure MyHelp; external;
-
- The $L compiler directive tells Turbo to link in MYHELP.OBJ. The fake
- procedure MyHelp gives your program a way to refer to the contents of
- that OBJ file.
- !PAGE
- Finally, to initialize the help system, make a call to OpenHelpMem as
- follows:
-
- Status := OpenHelpMem(@MyHelp, XLow, YLow, YHigh, Help);
- if Status <> 0 then
- {Error, help not available};
-
- The notation @MyHelp passes the address of the binary structure to the
- help system initialization procedure.
-
- From then on, simply refer to the Help variable returned by
- OpenHelpMem.