Листинг 1
      
unit Unit1; 
    
    interface 
    
    uses 
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
    StdCtrls, Buttons; 
    
    type 
    TForm1 = class(TForm) 
    Memo1: TMemo; 
    Button1: TButton; 
    Button2: TButton; 
    OpenDialog1: TOpenDialog; 
    BitBtn1: TBitBtn; 
    Button3: TButton; 
    FontDialog1: TFontDialog; 
    procedure Button1Click(Sender: TObject); 
    procedure Button2Click(Sender: TObject); 
    procedure Button3Click(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 
    
    var 
    Form1: TForm1; 
    
    implementation 
    
    uses Printers; // Эта ссылка обязательна! 
    
    {$R *.DFM} 
    
    procedure TForm1.Button1Click(Sender: TObject); 
    // Выбор файла с текстом и его загрузка в редактор 
    begin 
    if OpenDialog1.Execute then 
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName) 
    end; 
    
    procedure TForm1.Button3Click(Sender: TObject); 
    // Выбор шрифта и связывание его с Memo1 
    begin 
    if FontDialog1.Execute then 
    Memo1.Font := FontDialog1.Font 
    end; 
    
    procedure TForm1.Button2Click(Sender: TObject); 
    // Печать содержимого редактора как вывод в текстовый файл 
    var 
    Prn: TextFile; 
    k: Integer; 
    begin 
    AssignPrn(Prn); // Переназначаем вывод в файл на вывод в принтер 
    Rewrite(Prn); // Готовим принтер к печати (аналог BeginDoc) 
    { Для печати используем такой же шрифт, как и для показа 
    в редакторе: } 
    Printer.Canvas.Font := Memo1.Font; 
    // Цикл печати: 
    for k := 0 to Memo1.Lines.Count-1 do 
    WriteLn(Prn, Memo1.Lines[k]); 
    CloseFile(Prn); // Аналог EndDoc 
    end; 
    
    end.