6

The LA Fox Developer Newsletter
March 1995
Hot Tip....

How to Create an Interruptible
Report in Microsoft FoxPro
Document Number: Q89146 PubI Date: 16-SEP-1994

Product Name: Microsoft FoxPro
Product Version: 2.00 2.50 2.50a 2.50b
Operating System: MS-DOS

To allow the user to interrupt generating a report, place
a user-defined function (UDF) as a field object in the
Detail band of the report.

For example, if you want to create a UDF to interrupt a
report, place a field named STOPO on the Detail line of
the report. Then create the following program named
STOP.PRG in the same directory as your report:
STOP~PRG
SET TALK OFF

IF CHRSAWO
WAIT CLEAR
IF LASTKEYOI3
SET TYPEAHEAD TO 0
DEFINE WINDOW stopit FROM 10,10 TO 14,60 DOUBLE
ACTIVATE WINDOW stopit
x0
@
1,5 SAY “Stop printing report” GET x;
PICTURE HO*H Yes ; No”
READ
IF x1
GO BOTTOM
ENDIF
ENDIF
DEACTIVATE WINDOW stopit
ENDIF

SETTALKON
SET TYPEAHEAD TO 20

NOTE: SET TYPEAHEAD prevents FoxPro from refer-
ring to the ENTER key already in the keyboard buffer
(the print action calls the Print dialog box with the
PROMPT command).

The first time you run the code, you must press the ESC
key to cancel printing. The second time, and every time
thereafter, if you press ENTER when the report is in
process, a dialog box prompts you for the appropriate
action.

[COPYRIGHT Microsoft Corporation, 1994.)
Software Metrics (Con? from page 5)
Field Field Name
Type Width
Dec
I USER
Character
10
2 DATE
Date
8
3 TIME
Character
10
4 APP
Character
8
5 PROGRAM
Character
10
6 ERRORNUM
Numeric
4
7 ERRORMSG
Character
50
8 CODE
Memo
10
9 CURRDBF
Memo
10
10 LINENUM
Numeric
5
11 TOPWIND
Character
10
12 APPSTTIME
Numeric
10
4
13 ERRTIME
Numeric
10
4
14 NOTES
Memo
10
15 VIEW
Memo
10
16 MEMVAR
Memo
10
**Total**
186
The following code is the code used to capture and
log in the error into errhand.dbf

ERRHAND.PRG
=lusage(sys(16)) && I’ll get back to this later.

private cdbf, erraction, muser, i, oldsel, scrcode, topwind
private errnum, errmsg, line_num, src, oldtalk, oldecho,;
curobj, olderr

olderr = ON(”ERROR”)
ON ERROR
ginflag = iif(getenv(”NFLAG”)=”YES”,.t,.f.)
crntwind = wontopO

if type(’gcappname’) = “U”
gcappname =““
endiftype()

if type(’gnstart’) = “U”
gnstart =0
endiftypeO

oldsel = selectO
cdbf= dbf()
erraction ““
oldtalk = setC’TALK”)
oldecho = set(”ECHO”)
set talk off
set echo off
MOSER = GETENVrUSER”)

(Con't, page 7)
Page 6

6