Вывод текстовой информации
В приведенном ниже примере показано, как вывести на устройство печати содержимое редактора (класс типа ТМето). Для этого мы воспользуемся рядом процедур, определенных в модуле Printers. Сначала ассоциируем значение текстовой переменной с принтером. Для этого используется процедура AssignPrn. Например:
Var
TextToPrint : System.Text; {}
..............
AssignPrn(TextToPrint); {Ассоциировать с принтером)
Rewrite(TextToPrint);{Открыть файл}
Отметим, что с принтером может быть ассоциирована только одна текстовая переменная. Попытка ассоциации второй текстовой переменной приведет к возникновению ошибки.
После этого вызов стандартных процедур Write и Writeln приведет к выводу текста на устройство печати (точнее, в принтерный контекст, определенный свойством Canvas). Вывод содержимого редактора осуществляется с помощью стандартной процедуры Writeln:
For Line := 0 to Memo1.Lines.Count-1 do
Writeln(TextToPrint, Memo.Lines[Line])
После того как вывод информации завершен, необходимовызвать стандартную процедуру Close:
System.Close(TextToPrint)
Этот вызов эквивалентен вызову Printer.EndDoc.
Для того чтобы текст на устройстве печати печатался тем же шрифтом, что используется для его отображения в редакторе, перед выводом информации на принтер необходимо выполнить следующее присваивание:
Printer. Canvas. Font : = Memo1.Font;
Примечание.Для вывода текстовой информации можно также воспользоваться методом TextOut принтерного контекста (Canvas), который является «оболочкой» стандартной функции Windows API TextOut за тем исключением, что вам не требуется указывать в качестве первого параметра контекст — им служит компонент Canvas, и указывать число символов в строке:
procedure Canvas.TextOut(X, Y: Integer; const Text: string);
function GDI.TextOut(DC: HDC; X, Y: Integer; Str: PChar; Count: Integer):
Bool;