User Tools

Site Tools


propprint_supportcopies_propprint_supportcollate_example.htm
Navigation:  »No topics above this level«====== PROPPRINT:SupportCopies/ PROPPRINT:SupportCollate Example ====== Return to chapter overview

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