AppBuilder template
<< Click to Display Table of Contents >> Navigation: PROGRESS users > AppBuilder template |
Printing a browse is one of the common situations for the developer.
We suggest this template that you can insert in the progress.cst (src/template) file in order to add quickly this functionality in your screens.
By default, a preview is generated.
If you want different settings, modify the button PRIVATE-DATA attribute at design or run-time.
Syntax :
[PAGE=nn] [,FILE=filename] [,vpxPrint flags]
Where nn is the page size in lines, filename the output file name. Note that if you override the private-data, the <PREVIEW> tag is no longer automatic.
DESCRIPTION BROWSE PRINT
INHERIT C&ustom Size/Color
LABEL &Print
NAME BtnxPrint
TRIGGER CHOOSE
DO:
DEF VAR I AS INT NO-UNDO.
DEF VAR lPage AS INT NO-UNDO INITIAL 66.
DEF VAR filename AS CHAR NO-UNDO initial "browse.xpr".
DEF VAR A AS CHAR NO-UNDO.
DEF VAR B AS CHAR NO-UNDO.
IF {&SELF-NAME}:PRIVATE-DATA = ? then
{&SELF-NAME}:PRIVATE-DATA = "<PREVIEW=ZoomToWidth>".
DO I = 1 TO NUM-ENTRIES({&SELF-NAME}:PRIVATE-DATA) :
A = ENTRY(I, {&SELF-NAME}:PRIVATE-DATA ).
B = ENTRY(1, A, "=").
IF B = "PAGE" THEN
lPage = INT(ENTRY(2, A, "=")) NO-ERROR.
if B = "FILE" then
filename = TRIM(entry(2, A, "=")) NO-ERROR.
END.
OUTPUT TO value(filename) PAGED PAGE-SIZE VALUE(lPage).
DO I = 1 TO NUM-ENTRIES({&SELF-NAME}:PRIVATE-DATA) :
A = ENTRY(I, {&SELF-NAME}:PRIVATE-DATA ).
IF A > ""
AND NOT A BEGINS "page"
AND NOT A BEGINS "FILE" THEN
PUT CONTROL A.
END.
GET FIRST {&BROWSE-NAME}.
REPEAT WHILE AVAILABLE {&FIRST-TABLE-IN-QUERY-{&BROWSE-NAME}} :
/* Print */
DISP {&FIELDS-IN-QUERY-{&BROWSE-NAME}} WITH WIDTH 260 STREAM-IO.
GET NEXT {&BROWSE-NAME}.
END.
OUTPUT TO TERMINAL.
RUN printFile( fileNAme ).
END.
END TRIGGER