home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / PRINTERS.INT < prev    next >
Text File  |  1997-02-28  |  5KB  |  107 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1995,96 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit Printers;
  11.  
  12. {$R-}
  13.  
  14. interface
  15.  
  16. uses Windows, WinSpool, SysUtils, Classes, Graphics, Forms;
  17.  
  18. type
  19.   EPrinter = class(Exception);
  20.  
  21.   { TPrinter }
  22.  
  23.   { The printer object encapsulates the printer interface of Windows.  A print
  24.     job is started whenever any redering is done either through a Text variable
  25.     or the printers canvas.  This job will stay open until EndDoc is called or
  26.     the Text variable is closed.  The title displayed in the Print Manager (and
  27.     on network header pages) is determined by the Title property.
  28.  
  29.     EndDoc - Terminates the print job (and closes the currently open Text).
  30.       The print job will being printing on the printer after a call to EndDoc.
  31.     NewPage - Starts a new page and increments the PageNumber property.  The
  32.       pen position of the Canvas is put back at (0, 0).
  33.     Canvas - Represents the surface of the currently printing page.  Note that
  34.       some printer do not support drawing pictures and the Draw, StretchDraw,
  35.       and CopyRect methods might fail.
  36.     Fonts - The list of fonts supported by the printer.  Note that TrueType
  37.       fonts appear in this list even if the font is not supported natively on
  38.       the printer since GDI can render them accurately for the printer.
  39.     PageHeight - The height, in pixels, of the page.
  40.     PageWidth - The width, in pixels, of the page.
  41.     PageNumber - The current page number being printed.  This is incremented
  42.       when ever the NewPage method is called.  (Note: This property can also be
  43.       incremented when a Text variable is written, a CR is encounted on the
  44.       last line of the page).
  45.     PrinterIndex - Specifies which printer in the TPrinters list that is
  46.       currently selected for printing.  Setting this property to -1 will cause
  47.       the default printer to be selected.  If this value is changed EndDoc is
  48.       called automatically.
  49.     Printers - A list of the printers installed in Windows.
  50.     Title - The title used by Windows in the Print Manager and for network
  51.       title pages. }
  52.  
  53.   TPrinterState = (psNoHandle, psHandleIC, psHandleDC);
  54.   TPrinterOrientation = (poPortrait, poLandscape);
  55.   TPrinterCapability = (pcCopies, pcOrientation, pcCollation);
  56.   TPrinterCapabilities = set of TPrinterCapability;
  57.  
  58.   TPrinter = class(TObject)
  59.   public
  60.     constructor Create;
  61.     destructor Destroy; override;
  62.     procedure Abort;
  63.     procedure BeginDoc;
  64.     procedure EndDoc;
  65.     procedure NewPage;
  66.     procedure GetPrinter(ADevice, ADriver, APort: PChar; var ADeviceMode: THandle);
  67.     procedure SetPrinter(ADevice, ADriver, APort: PChar; ADeviceMode: THandle);
  68.     property Aborted: Boolean;
  69.     property Canvas: TCanvas;
  70.     property Capabilities: TPrinterCapabilities;
  71.     property Copies: Integer;
  72.     property Fonts: TStrings;
  73.     property Handle: HDC;
  74.     property Orientation: TPrinterOrientation;
  75.     property PageHeight: Integer;
  76.     property PageWidth: Integer;
  77.     property PageNumber: Integer;
  78.     property PrinterIndex: Integer;
  79.     property Printing: Boolean;
  80.     property Printers: TStrings;
  81.     property Title: string;
  82.   end;
  83.  
  84. { Printer function - Replaces the Printer global variable of previous versions,
  85.   to improve smart linking (reduce exe size by 2.5k in projects that don't use
  86.   the printer).  Code which assigned to the Printer global variable
  87.   must call SetPrinter instead.  SetPrinter returns current printer object
  88.   and makes the new printer object the current printer.  It is the caller's
  89.   responsibility to free the old printer, if appropriate.  (This allows
  90.   toggling between different printer objects without destroying configuration
  91.   settings.) }
  92.  
  93. function Printer: TPrinter;
  94. function SetPrinter(NewPrinter: TPrinter): TPrinter;
  95.  
  96. { AssignPrn - Assigns a Text variable to the currently selected printer.  Any
  97.   Write or Writeln's going to that file variable will be written on the
  98.   printer using the Canvas property's font.  A new page is automatically
  99.   started if a CR is encountered on (or a Writeln is written to) the last
  100.   line on the page.  Closing the text file will imply a call to the
  101.   Printer.EndDoc method. Note: only one Text variable can be open on the
  102.   printer at a time.  Opening a second will cause an exception.}
  103.  
  104. procedure AssignPrn(var F: Text);
  105.  
  106. implementation
  107.