PRODUCT:  R:BASE                           VERSION:  4.5+ or Higher
     CATALOG:  Forms, Reports & Labels          AREA   :  Forms
     Printing the data just entered is another action that has been made easier
     to do with 4.5 Plus!. You can automatically print as soon as a row is 
     saved, you can prompt the user, you can add a print "button" to your form.
     All are easily done. Here we show the techniques used to do this. They can
     be easily adapted and added to your applications. 
     Automatic printing
     This is the easiest. To print every row as it is entered, place the EEP at
     the table level After saving row.  The row is saved and then the report 
     printed. Your EEP only requires commands to set the output and to print 
     the report. You must have a form expression, however, that places the rows
     identifying number into a variable, vtransid = transid. That lets you print 
     just that row. For example,
     *( PRINT.EEP)
       PRINT invoice WHERE transid = .vtransid
     You can add error checking code, code to let the user select the output 
     device, etc. 
     Automatic printing from a region
     In a form with a region as the last table, however, you can't place the EEP 
     After saving row. In a region, each row is saved as you leave it and move 
     to the next row. The printing EEP needs to execute only after all the rows
     have been added to the region. Place the EEP On exit from a row and check 
     for keystrokes.  The EEP prints the report if the user presses Alt-A to go
     to the menu. 
     IF (LASTKEY(0)) = '[Alt]A' THEN
         PRINT invoice WHERE transid = .vtransid
     The EEP only command, SAVEROW, is needed here because the EEP executes 
     before the last row has been saved to the table. The EEP is On exit from a
     row and executes before the menu selection is executed. 
     Conditional printing
     The previous two techniques automatically print the report. There is no 
     user interaction or intervention. The report prints based on certain 
     actions taken in the form. You can make the EEP more generic by adding a 
     simple dialog box. This gives you more options as to placement of the EEP 
     and when it executes. Prompt to print the report if the user goes to any 
     menu option. The EEP stays placed On exit from a row. 
     IF (LASTKEY(0)) IN ('[Alt]A', '[Alt]G', '[Esc]') THEN
       DIALOG 'Print invoice? ' vresp, vkey YES
       IF vresp = 'YES' THEN
           PRINT invoice WHERE transid = .vtransid
     Remember, the EEP code is executing before the menu action takes place. 
     Using a print "button"
     The above techniques are designed for adding new data to a form. When 
     editing data, you may want to add a print "button" to your form. A print 
     "button" is a located variable that prints a report when the user moves 
     to that field. It uses a field level EEP rather than a table level EEP. 
     This technique can also be used on an entry form with the SAVEROW command.
     Use the new mouse position functions to print if the user moves to the 
     field with keys or with the mouse. 
     To add a print "button" to a form whose last table is a region, you use a 
     dummy table. This lets you locate a variable field, your print "button", 
     after the region. The variable has an EEP On exit from field that prints 
     the report. The dummy table is added as the last table in your form. It 
     doesn't need any fields in common with other tables in the form. Load the 
     dummy table with one row of data. 
     CREATE TABLE dummy_tab (dummy_col INTEGER)
     LOAD dummy_tab
     L> 1
     L> end
     With the dummy table the current table in the form, locate a TEXT variable, 
     vyesno, one character wide. Add text such as, Print report?, to the left of 
     the variable location. Customize the field settings to make the variable 
     editable, add an EEP On exit from field.
     Next, add expressions to your form. You must have a form expression that 
     places the row's identifying number into a variable, vtransid = transid. 
     In addition, add an expression to the dummy table to put a default value 
     into the print "button" variable, vyesno TEXT = 'Y'. 
     The EEP checks the value of the vyesno variable. If 'Y', the default, it 
     prints the report. 
     IF .vyesno <> 'Y' AND .vyesno <> 'N' THEN
        SKIP 0
        IF .vyesno = 'Y' THEN
          OUTPUT Printer
          PRINT invoice WHERE transid = .vtransid
     The EEP has error checking to ensure that only a 'Y' or an 'N' is allowed 
     to be input into the variable. If any other character is entered, the SKIP
     0 command prevents the cursor from advancing out of the field. 
     Read the articles on windowed forms, conditional EEPs and action EEPs for 
     more ideas on adding a custom print "button" to your form.