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

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, Buttons, Printers;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     Memo1: TMemo;
  12.     SetupBitBtn: TBitBtn;
  13.     PrintBitBtn: TBitBtn;
  14.     CloseBitBtn: TBitBtn;
  15.     OpenBitBtn: TBitBtn;
  16.     OpenDialog1: TOpenDialog;
  17.     PrintDialog1: TPrintDialog;
  18.     PrinterSetupDialog1: TPrinterSetupDialog;
  19.     procedure OpenBitBtnClick(Sender: TObject);
  20.     procedure SetupBitBtnClick(Sender: TObject);
  21.     procedure PrintBitBtnClick(Sender: TObject);
  22.   private
  23.     { Private declarations }
  24.   public
  25.     { Public declarations }
  26.   end;
  27.  
  28. var
  29.   MainForm: TMainForm;
  30.  
  31. implementation
  32.  
  33. {$R *.DFM}
  34.  
  35. procedure TMainForm.OpenBitBtnClick(Sender: TObject);
  36. begin
  37.   with OpenDialog1 do
  38.   if Execute then
  39.   begin
  40.     Memo1.Lines.LoadFromFile(FileName);
  41.     Caption := Lowercase(FileName);
  42.   end;
  43. end;
  44.  
  45. procedure TMainForm.SetupBitBtnClick(Sender: TObject);
  46. begin
  47.   PrinterSetupDialog1.Execute;
  48. end;
  49.  
  50. procedure TMainForm.PrintBitBtnClick(Sender: TObject);
  51. var
  52.   FPrn: System.Text;  { Printer output text file }
  53.   I: Integer;         { Memo1.Lines index }
  54.   LCol: Integer;      { Line number column width }
  55. begin
  56.   if PrintDialog1.Execute then
  57.   begin
  58.     AssignPrn(FPrn);  { Direct Write/Writeln to FPrn }
  59.     Rewrite(FPrn);    { Open printer output file }
  60.     try
  61.       Printer.Canvas.Font := Memo1.Font;  { Use Memo's font }
  62.       with Memo1, Lines do
  63.       begin  { Set line number column width for file size:         }
  64.         if Count < 10 then LCol := 1         { 0 .. 9 lines        }
  65.         else if Count < 100 then LCol := 2   { 10 .. 99 lines      }
  66.         else if Count < 1000 then LCol := 3  { 100 .. 999 lines    }
  67.         else LCol := 4;                      { You must be kidding }
  68.         for I := 0 to Count - 1 do
  69.         begin
  70.           Write(FPrn, I + 1:LCol, ': ');  { Print line number }
  71.           Writeln(FPrn, Lines[I]);        { Print line }
  72.         end;
  73.       end;
  74.     finally
  75.       CloseFile(FPrn);  { Close printer output file }
  76.     end;
  77.   end;
  78. end;
  79.  
  80. end.
  81.