4.7.2 Друк за допомогою об'єкта Printer
У Delphi є клас друкуючих об'єктів TPrinter. який забезпечує друк текстів, зображень та інших об'єктів, розташованих на його канві - Canvas (див. розділи 3.2 і 4.2). На канві об'єкта типу TPrinter можуть розміщуватися і тексти, і зображення.
Модуль Delphi, іменований Printers. містить змінну Printer. що є об'єктом типу TPrinter. Ця змінна еквівалентна невізуальні компоненти, тільки відсутньому в палітрі бібліотеки. Щоб використовувати Printer. треба додати модуль Printers в оператор uses вашої програми. Автоматично він не додається.
Розглянемо деякі властивості і методи об'єкта типу TPrinter.
Канва Canvas - місце в пам'яті, в якому формується сторінка або документ перед друком. Canvas має низку властивостей, включаючи Pen (перо) і Brush (кисть), які дозволяють вам робити малюнки і поміщати на них текст. Детальний опис канви і методів роботи з нею ви знайдете в розділі 4.2.
Метод канви, який дозволяє посилати в неї текст (див. Розділ 3.2).
Використовується для початку завдання друку.
Використовується для закінчення завдання друку. Фактична друк відбувається тільки при виклику EndDoc.
Повертає висоту сторінки в пікселях.
Примусово починає нову сторінку на принтері.
Повертає поточний номер друкованої сторінки.
Припустимо, ви хочете надрукувати текст, використовуючи друкує об'єкт. Ви можете написати код виду:
Цей код викликає друк на канві принтера тексту «Я печaтаю через об'єкт Printer», починаючи з десятого пікселя зліва і десятого зверху. BeginDoc запускає завдання на друк. Текст посилається на канву за допомогою методу TextOut об'єкта Canvas. Метод EndDoc викликає друк тексту і зупиняє завдання на друк.
Якщо ви хочете надрукувати зображення, що зберігається в компоненті Image1 (див. Розділ 4.3), це можна зробити операторами:
При друку тексту об'єкт Printer не виробляє автоматичного перенесення рядків і розбиття тексту на сторінки. Тому друк довгих текстів за допомогою об'єкта Printer вимагає досить складного програмування. Простіше це робити, наприклад, завантаженням тексту в компонент RichEdit (див. Розділ 3.3.4) і виконанням його методу Print (див. Розділ 4.7.1). Інший можливий варіант - використання описаної в наступному розділі системи QuickReport.