Різні
способи друку з додатків h2>
У цій статті я
спробую розповісти Вам про найбільш зручних і розповсюджених способи друку
текстів і зображень з Ваших додатків. Друк використовується в додатках не
так часто, от і виникають різні питання з цього приводу. Іноді буває
необхідно "вивести на принтер" графік отриманої функції або звіт
про діяльність фірми і т.д. Прочитавши цю статтю ви засвоїте все найнеобхідніше
для друку даних з Ваших додатків. p>
Отже, почнемо
розгляд цих способів. p>
Друк з
допомогою функцій файлового введення/виводу h2>
Тут ми будемо
використовувати прості функції введення/виводу у файл, тільки зв'яжемо вихідний
потік не з файлом, а з принтером. Розглянемо приклад друкування тексту,
що міститься в компоненті TEdit: p>
var P: TextFile; p>
begin p>
AssignPrn (P); p>
Rewrite (P); p>
Writeln (P, Edit1.text); p>
CloseFile (P); p>
End; p>
Тут ми
оголошуємо змінну P типу TextFile. Процедура AssignPrn є різновидом процедури Assign. Вона
налаштовує змінну P на порт принтера і дозволяє працювати з ним як з
файлом. Rewrite відкриває порт для роботи, а WriteLn - виводить інформацію на
друк. Важливо закрити порт принтера командою CloseFile! p>
Цей спосіб
можна використовувати для роздруківки рядків у списку або яких-небудь інших даних,
в міру їх надходження в програму. p>
Друк
текстів в збагаченому форматі методом Print h2>
Якщо Ви
намагалися спробувати роздрукувати тексти з Вашого програми, то, напевно, Вам
відомо, що компонент TRichEdit має метод Print, що дозволяє друкувати
текст, що зберігається в цьому компоненті. Цей метод має тільки один параметр --
рядок, що при перегляді в Windows черги друкованих завдань є
ім'ям завдання. Наведу приклад використання (хоча він очевидний:) p>
RichEdit1.Print ( 'Print of our RichEdit1'); p>
Слід
помітити, що печатка відтворює всі особливості форматування тексту, так
ж відбувається автоматичне перенесення рядків і розбиття тексту на сторінки. При
цьому довжина рядків ні як не пов'язана з розмірами компонента RichEdit. p>
Друк з
допомогою об'єкта Printer h2>
У Дельфі
є клас друкуючих об'єктів TPprinter, який забезпечує друк
текстів, зображень та інших об'єктів, розташованих на його канві (Canvas). p>
Модуль Дельфі Printers,
містить змінну Printer, яка є об'єктів типу TPrinter. Тому
для використання цієї змінної у Ваших програмах, треба підключити модуль
Printers в оператор Uses (на жаль автоматично цього не робиться) p>
Розглянемо
докладніше деякі властивості і методи об'єкту TPrinter: p>
Властивість,
метод p>
Опис p>
Canvas p>
Канва --
місце в пам'яті, в якому формується сторінка або документ перед друком. p>
TextOut p>
Метод
канви, що дозволяє посилати до неї текст p>
BeginDoc p>
Використовується
для початку завдання друку p>
EndDoc p>
Використовується
для завершення завдання друку. При цьому друк починається тільки після дзвінка
цього методу! p>
PageHeight p>
Повертає
NewPage p>
Примусово
починає нову сторінку p>
PageNumber p>
Повертає
номер друкованої сторінки p>
Наведу два
приклад друку за допомогою об'єкта TPrinter тексту та зображення. p>
Друк тексту
можна здійснити так: p>
Printer.BeginDoc; p>
Printer.Canvas.TextOut (10,10, 'Друкуємо
за допомогою об'єкта Printer'); p>
Printer.EndDoc; p>
Якщо Ви хочете
надрукувати зображення, що знаходиться, наприклад, у компоненті Image1, то код
може бути таким: Printer.BeginDoc; p>
with Image1.Picture.Bitmap do
Printer.Canvas.CopyRect (Rect (0,0, Height, Width), Canvas, Rect (0,0, Height, Width )); p>
Printer.EndDoc;
p>
і Здавалося б і
тут все просто, але в об'єкта Printer є істотний недолік: він не
виробляє автоматичне розбиття на рядки і сторінки, тому друкувати
довгі тексти переважно за допомогою компонента RichEdit або Memo. p>
Друк форм h2>
У форм в Delphi
є метод Print, який друкує всю клієнтську область форми. При цьому
смуга заголовка і смуга головного меню форми не друкуються. p>
Властивість
PrintScale визначає опції масштабування зображення форми при друку: p>
poNone p>
Масштабування
не використовується. Розмір зображення може змінюватися в залежності від
використовуваного принтера p>
poPrintToFit p>
Робиться
спроба надрукувати зображення форми того ж розміру, який видно на екрані p>
poProportional p>
Збільшує
або зменшує розмір зображення, підганяючи його під розмір сторінки. p>
На цьому ми
закінчуємо огляд способів друку даних з Ваших додатків. Сподіваюся, що ще
одним питанням у Вас стало менше:)) p>
Список
літератури h2>
Михайло
Хрістосенко. Різні способи друку з додатків p>
Для підготовки
даної роботи були використані матеріали з сайту http://delphid.dax.ru
. p>