propprint_supportcopies_propprint_supportcollate_example.htm
Navigation: »No topics above this level«====== PROPPRINT:SupportCopies/ PROPPRINT:SupportCollate Example ====== | |
Using the PROPPRINT:SupportCopies and PROPPRINT:SupportCollate read-only properties you now have a chance to check for the necessity of simulating the output of multiple copies or their collation set using in the Printer Setup dialog invoked by PRINTERDIALOG, or using the PROPPRINT:Copies and PROPPRINT:Collate properties.
Example:
FlushQueue QUEUE,THREAD |
N LONG |
END |
FlushIdx UNSIGNED,THREAD |
FlushPageNo PROCEDURE (LONG prev) |
CODE |
IF prev = 0 |
FlushIdx = 1 |
ELSE |
FlushIdx += 1 |
END |
IF FlushIdx <;= RECORDS(FlushQueue) |
GET(FlushQueue, FlushIdx) |
RETURN FlushQueue.N |
ELSE |
RETURN -1 |
END |
DoPrintReport PROCEDURE() |
I LONG,AUTO |
Copies UNSIGNED,AUTO |
Collate BYTE,AUTO |
CanCopies BYTE,AUTO |
CanCollate BYTE,AUTO |
CODE |
Copies = PRINTER {PROPPRINT:Copies} |
Collate = PRINTER {PROPPRINT:Collate} |
CanCopies = PRINTER {PROPPRINT:SupportCopies} |
CanCollate = PRINTER {PROPPRINT:SupportCollate} |
IF Copies = 1 |
Collate = FALSE |
ELSIF CanCopies AND (NOT Collate OR CanCollate) |
Copies = 1 |
Collate = FALSE |
ELSIF NOT CanCopies |
IF Collate AND CanCollate |
PRINTER {PROPPRINT:Collate} = FALSE ! Collate copies manually |
END |
ELSIF NOT CanCollate |
IF Copies <;> 1 |
PRINTER {PROPPRINT:Copies} = 1 ! Output copies manually |
END |
END |
FREE(FlushQueue) |
IF Collate |
LOOP Copies TIMES |
LOOP i = 1 TO RECORDS (PreviewQueue) |
FlushQueue.N = i |
ADD(FlushQueue) |
END |
END |
ELSE |
LOOP i = 1 TO RECORDS (PreviewQueue) |
LOOP Copies TIMES |
FlushQueue.N = i |
ADD (FlushQueue) |
END |
END |
END |
Report {PROP:FlushPageNumFunc} = ADDRESS (FlushPageNo) |
Report {PROP:FlushPreview} = TRUE |
Report {PROP:FlushPageNumFunc} = 0 |
RETURN |
propprint_supportcopies_propprint_supportcollate_example.htm.txt · Last modified: 2021/04/15 15:57 by 127.0.0.1