home *** CD-ROM | disk | FTP | other *** search
/ Delphi 4 Bible / Delphi_4_Bible_Tom_Swan_IDG_Books_1998.iso / source / PRNINFO / MAIN.PAS < prev    next >
Pascal/Delphi Source File  |  1998-04-13  |  2KB  |  78 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Printers, StdCtrls, Buttons;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     PrintButton: TButton;
  12.     CloseBitBtn: TBitBtn;
  13.     procedure PrintButtonClick(Sender: TObject);
  14.   private
  15.     { Private declarations }
  16.   public
  17.     { Public declarations }
  18.   end;
  19.  
  20. var
  21.   MainForm: TMainForm;
  22.  
  23. implementation
  24.  
  25. {$R *.DFM}
  26.  
  27. procedure TMainForm.PrintButtonClick(Sender: TObject);
  28. var
  29.   FPrn: System.Text;
  30.   Extent: TSize;
  31.   Metrics: TTextMetric;
  32.   I, LinesPerPage, CharsPerLine, AverageWidth: Integer;
  33.   S : String;
  34. begin
  35.   AssignPrn(FPrn);
  36.   Rewrite(FPrn);
  37.  
  38.   with Printer.Canvas do
  39.   begin
  40.     Font.Name := 'Courier New';
  41.     Font.Size := 12;
  42.   end;
  43.  
  44. {- Fill test string with ASCII values 32 to 255 }
  45.   try
  46. (*    S[0] := Chr(224);      // This is no longer allowed *)
  47.     SetLength(S, 224);       // Use this method instead
  48.     for I := 32 to 255 do    // Fill string with test chars
  49.       S[I - 31] := Chr(I);
  50.     with Printer, Canvas do
  51.     begin
  52.     {- Determine number of lines per page }
  53.       GetTextExtentPoint(Handle, @S[1], Length(S), Extent);
  54.       LinesPerPage := PageHeight div (Extent.Cy + 2);
  55.       if PageHeight mod Extent.Cy <> 0 then
  56.         Dec(LinesPerPage);
  57.     {- Determine average number of characters per line }
  58.       GetTextMetrics(Handle, Metrics);
  59.       AverageWidth := Metrics.tmAveCharWidth;
  60.       CharsPerLine := PageWidth div AverageWidth;
  61.     {- Print the report }
  62.       Writeln(FPrn, 'Device = ', Printers[PrinterIndex]);
  63.       Writeln(FPrn, 'Font = ', Font.Name);
  64.       Writeln(FPrn, 'Font Size = ', Font.Size, ' points');
  65.       Writeln(FPrn, 'PageHeight = ', PageHeight, ' pixels');
  66.       Writeln(FPrn, 'PageWidth = ', PageWidth, ' pixels');
  67.       Writeln(FPrn, 'Extent.Cx = ', Extent.Cx, ' pixels');
  68.       Writeln(FPrn, 'Extent.Cy = ', Extent.Cy, ' pixels');
  69.       Writeln(FPrn, 'Lines per page = ', LinesPerPage);
  70.       Writeln(FPrn, 'Chars per line = ', CharsPerLine);
  71.     end;
  72.   finally
  73.     CloseFile(FPrn);
  74.   end;
  75. end;
  76.  
  77. end.
  78.