| **Navigation:**  »No topics above this level«====== PROPPRINT:SupportCopies/ PROPPRINT:SupportCollate Example ====== | {{btn_prev_d.gif}}[[coming future.htm|{{btn_home_n.gif|Return to chapter overview}}]]{{btn_next_d.gif}} | | || 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** |