home *** CD-ROM | disk | FTP | other *** search
- INTRODUCTION
- ============
-
- The examples included with JetForm Design are intended
- to help forms designers and applications developers
- explore the possibilities available in JetForm forms.
- This file explains some of the main items presented in
- the examples.
-
- EXAMPLES
- ========
-
- E 1. FILLER - EX_E_1 - E-mail Example - DBFetch /
- Responses / Routing
-
- F 1. FILLER - EX_F_1 - Calculations using functions
- for Date Arithmetic.
-
- F 2. FILLER - EX_F_2 - Complex Calculations - Expense
- Form
-
- F 3. FILLER - EX_F_3 - Complex Calculations -
- Demonstration Form
-
- THE JFMERGE PRODUCT does not come with JetForm Design.
- It is sold separately and runs on many platforms. It is
- used to integrate JetForm Electronic Forms Printing
- with existing applications. These examples require
- JFMERGE.
-
- M 1. JFMERGE - EX_M_1 - Field Mode / Comma Delimited
- Mode / Record Mode
-
- M 2. JFMERGE - EX_M_2 - Subforms - Field Mode
-
- M 3. JFMERGE - EX_M_3 - Subforms - Field / Record Mode
-
-
- IMPORTANT NOTE:
-
- For all of these examples you can benefit from opening
- the source form file (.ifd) from within JetForm Design and
- looking at the drawing objects, especially the field
- attributes. If you select the File Menu and choose the
- REPORT ON FIELDS, JetForm will produce an informative
- report and invoke the Windows Note Pad program where
- you can browse the information or print it.
-
- JetForm also provides a utility program - JFINFO - as
- part of the JetForm Design product. This program can be run
- from DOS. Invoking this program without parameters
- will display all of the command line options. Run this
- program providing it the name of an [.mdf] file with
- the -RF option will produce good information about the
- fields and pages of a form. For example:
-
- JFINFO EX_*.MDF -RF
-
-
- Details:
-
- E 1. E-MAIL - EX_E_1 - Email Example - DBFetch /
- Responses / Routing
-
- PURCHASE REQUEST
-
- TO INVOKE: In Windows, select Filler
- On the File Menu, select Open Form
- From the list box, select -> EX_E_11
-
- This example is used in the JetForm Filler Getting
- Started Manual.
-
-
- F 1. JetForm Filler [Graphical User Interface] ->
- EX_F_1.MDF
-
- TO INVOKE: In Windows, select Filler
- On the File Menu, select Open Form
- From the list box, select -> EX_F_1
-
- The top of this example is a simple form that computes
- the average of 2 years salary increases and
- extrapolates a salary 10 years from now based on the
- 'trend'. This shows these functions:
-
- - arithmetic operators - ( * multiplication, /
- division, + addition, - subtraction )
- - AVG - Average
- - EXP - Exponentiation
- - Field output Pictures - $zzz,zzz
-
- The middle section of the form shows date arithmetic
- and the retrieval of the system date. Today's date is
- displayed and then the date 1000 days from today then
- the date 2000 days from today. Functions used:
-
- - Today()
- - DateArith()
-
- The main body of the form prompts for names and date of
- birth. The date is expected in the format 'mm/dd/yy'.
- The form then calculates the person's age in days ;
- then computes the day of the week for this year's
- birthday and next year's birthday. The functions used:
-
- - Today()
- - Date2Num() - for valid date checking
- - If()
- - CDow() - day of week
-
- To calculate 'Days Old' - the algorithm is
-
- IF the date of birth is a valid date THEN
- date subtract DateOfBirth from Today's Date
- ENDIF
-
- To calculate the Day of the Week for 'This Year's
- Birthday' ->
-
- IF the date of birth is a valid date THEN
- Take the month and day portion of DateOfBirth
- combined with the year portion of Today
- Use the CDow function with this new date
- ENDIF
-
- To calculate the Day of the Week for 'Next Year's
- Birthday' ->
-
- IF the date of birth is a valid date THEN
- Take the month and day portion of DateOfBirth
- combined with (the year portion of Today) + 1
- Use the CDow function with this new date
- ENDIF
-
- F 2. JetForm Filler [Graphical User Interface] ->
- EX_F_2.MDF
-
- TO INVOKE: In Windows, select Filler
- On the File Menu, select Open Form
- From the list box, select -> EX_F_2
-
- This example is an EXPENSE REPORT. There are many
- techniques shown on this form.
-
- F 2.1 Use of the GetProfile() function to retrieve
- User specific (static) information from an (.ini) file
- identified in the calculation. The Company name and
- address are actually retrieved by 'identifier' from a
- file in the Windows directory called JF_EXMPL.INI.
-
- We encourage you to edit the JF_EXMPL.INI file (in the
- windows directory) and use your own company name and
- address on the form. This technique can be employed to
- help populate a form with work station specific / user
- specific / installation specific values.
-
- F 2.2 Use of off-page WORK fields to selectively SUM
- up values based on expense category. These off-page
- fields will not be seen by the person filling the form.
-
- The expense category field has a 'Typical Response
- File' associated with it. This is a list of potential
- values for the field. By hitting the F3 function key
- you will be presented with the list - now you can
- choose a response by double clicking the left mouse
- button. The idea with this form is that you enter all
- of the line items for a particular expense category
- like - Travel. When all of the line items for Travel
- have been entered, choose the category 'TOTAL'. The
- form will calculate the subtotal for that category.
- Now you would enter line items for the next category.
- The form is also capable of calculating domestic
- dollar values for foreign currency amounts.
-
- F 2.3 Use of the ACCESS function to retrieve a
- value from a previous page (record). This enables the
- generation of a grand total should your report span
- more than one page.
-
- F 3. JetForm Filler [Graphical User Interface] ->
- EX_F_3.MDF
-
- TO INVOKE: In Windows, select Filler
- On the File Menu, select Open Form
- From the list box, select -> EX_F_3
-
- This example is a DEMONSTRATION FORM (no useful
- purpose).
-
- There are many techniques shown on this form
-
- F 3.1 Use of the GetProfile() function to retrieve
- the location of the dBASE files. This is kept in the
- JFILLER.INI file in the working directory. The
- variable retrieved is "OpenDataFile" from the section
- called "Paths". The result of the GetProfile is stored
- in an off-page Invisible, NoPrint field - DBPATH_PROF.
- Five unnecessary characters are removed from the
- contents of DBPATH_PROF using the SUBSTR() function.
- The result is stored in an off-page Invisible, NoPrint
- field called DBPATH.
-
- F 3.2 Use of field picture to upshift all characters
- field -> KEY - picture -> !!!!!!!!!!.
-
- F 3.3 Use of Field Help [F2] and Typical Response
- Files [F3] - list boxes.
-
- F 3.4 Use of DBFetch and DBField functions to
- retrieve a database record and populate form fields
- with data from that record.
-
- F 3.5 Use of on-page WORK fields to count up the
- number of check boxes that are checked.
-
- F 3.6 Use of Check Boxes and Radio Buttons and
- calculating field contents based on their values.
-
- F 3.7 Use of Dynamic Tabbing based on field
- content.
-
- F 3.8 Use of Electronic Authorization with field
- locking. A field [GRAPH] is also populated with a
- command that forces filler to retrieve a [.PCX] file
- and display it on the screen. This example takes
- advantage of the Signature Authorization Files
- included as part of example EX_E_1 -> [EX_E_11.saf
- password sam and EX_E_12.saf with password baz].
- All that the form tests for here is that
- the Additional Information data stored with the .SAF
- starts with "Sam" or "Bar". When you set up Electronic
- Authorization (Signatures) using JFAUTH supplied with
- JFDesign; you associate with each Authorized User 3
- pieces of information -> UNIQUE ID, SIGNATURE,
- ADDITIONAL INFORMATION. When you place a Signature
- field on a form at Design time, the form's designer
- has the option to show on the form any 1 of those
- fields, as well as associating a list of form field
- names that are to be LOCKED when the field is
- SIGNED. The ADDITIONAL INFORMATION value appears in
- a field called SIGN1. The validation calculation
- associated with field SIGN1, checked that the signer
- is "Sam" if the COMPUTED COST field has a
- value>$500.
-
- F 3.9 Use of E-Mail Oriented fields and simple
- Routing Calculations. When the form was designed the
- "Routing" function selected from the Tools menu was
- used to compute where the form is to be sent. The
- system fields -> SEND_INDEX, TO, and CC are used. The
- calculations for these fields make use of the
- GetProfile() function once again to demonstrate that
- the values used to populate the fields may be
- specific to a work station or a work group but yet
- not hard coded on the form.
-
- M 1. JFMerge Example 1 -> EX_M_1.MDF
-
- This set of merge examples uses a form with many
- single line fields, columns that are made of single
- line fields with unique names, a multi-line field,
- and global fields (fields on the form with duplicate
- names that the data stream will identify as global)
-
-
- Data Stream Example 1 -> EX_M_11.DAT
-
- Field Named data format (field nominated)
-
- Each field is named using the ^field command followed
- by a <CR><LF> followed by the value for the field
-
- The data file begins identifying those fields that are
- to be treated as global and the current value for
- those globals.
-
- Data Stream Example 2 -> EX_M_12.DAT
-
- Comma delimited format - note use of ~ (tilde) and
- ` (back quote). There are 10 single line text fields
- set up on this form as well as 10 noprint fields
- required by other examples, so the data stream
- contains the necessary extra ~ and ` characters to
- properly skip over the redundant fields [tilde = skip]
-
- Invocation:
- jfmerge EX_M_1 EX_M_12.dat -d
-
-
- Data Stream Example 3 -> EX_M_13.DAT
-
- Record Mode format file - global fields - page full
- condition
-
- Please read the data file - EX_M_13.dat for further
- information.
-
- Invocation:
- jfmerge EX_M_1 EX_M_13.dat
-
- M 2. JFMerge - Example 2 -> EX_M_2 - Subforms -
- Field Mode
-
- This example uses a form that is designed using the
- "SUBFORM" architecture. The document is pieced
- together using sections or subforms to grow the
- necessary form. In design you would create a base page
- (or pages), then design the subforms or sections as
- distinct "pages" (1 subform = 1 page) with the
- 'Compile As Subform' switched on in the format page
- dialogue box. Each subform is referenced by its page
- number in the .MDF file.
-
- When Merge activates a page, it brings into memory all
- of the fields that reside on that page. These are the
- only fields it knows about at any given moment. When
- merge is instructed to activate a subform it drops the
- current field list, and inherits the field list from
- the newly activated subform "page". The subform
- template (boiler plate) is placed on the active page
- with its upper left hand corner being placed at the
- current pen position. Prior to activating a subform it
- is always wise to position the pen to a field (in the
- current list) that allows you to be precise for
- subform placement. All subforms in these examples
- contain a 'dummy' field called "POSITION" that is only
- used for pen placement prior to activating (laying
- down on paper) the next subform. In effect - subforms
- are chained together.
-
- Please read the data files for these examples. They
- contain further information.
-
- M 3. JFMerge - Example 3 -> EX_M_3 - Subforms - Field
- Mode / Record Mode
- [REQUIRES JFMERGE 3.0 G2 OR NEWER TO POPULATE GLOBAL
- FIELDS]
-
- This subform example puts together an insurance policy
- form with sections determined by the data stream.
-
- EX_M_31.dat -> gives a tedious yet straight forward
- Field named format file.
-
- EX_M_32.dat -> provides an example with some merge
- commands interspersed with record buffers.
-
- EX_M_33.dat -> this complex example is the most terse
- and most interesting. It uses Record mode data
- formatting with 'keyed' record structures to determine
- pagination and subform invocation.
-
- The data streams contain further information.
-
-