Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по дисциплине Объектно-ориентирован...doc
Скачиваний:
33
Добавлен:
01.07.2025
Размер:
14 Мб
Скачать
☆

3. Печать файлов средствами стандартных приложений Windows с помощью функции ShellExecute и обращения к серверам сом

Для печати файлов средствами стандартных приложений Windows можно использовать функцию ShellExecute. Подробно на этой функции мы остановимся попозже. А здесь мы коротко рассмотрим технологию такой печати без каких-либо дополнительных пояснений.

Чтобы воспользоваться функцией ShellExecute, надо в оператор uses вашего приложения добавить ссылку на модуль ShellApi. Функция ShellExecute при соответствующем задании ее параметров ищет по расширению заданного для печати файла соответствующую ему системную программу Windows, и, если находит, то осуществляет печать. Например, обычно Windows настроен так, что файлам с расширением .txt соответствует программа Notepad, а файлам с расширением .doc — Word. В этом случае выполнение оператора

ShellExecute(Handle, 'print', 'test.txt',nil,nil,SW_Hide); вызовет печать файла с именем test.txt средствами программы Notepad, а оператор

ShellExecute(Handle, 'print', 'test.doc',nil,nil,SW_Hide);

вызовет печать файла с именем test.doc средствами программы Word.

Этот способ печати можно использовать как для распечатки заранее созданных файлов, так и для распечатки файлов, созданных во время выполнения приложения методами SaveToFile, имеющимися у многих компонентов.

В Delphi существует также возможность печатать тексты и графику средствами стандартного редактора Windows Word или средствами Excel. Для этого в Delphi 5 имеются компоненты — серверы СОМ, позволяющие сначала создать документ соответствующего приложения Windows, а затем его напечатать.

4. Печать с помощью объекта Printer

В Delphi имеется класс печатающих объектов TPrinter, который обеспечивает печать текстов, изображений и других объектов, расположенных на его канве — Canvas. Свойства канвы подробно рассмотрены в следующей лекции и здесь мы не будем на них останавливаться. Достаточно знать, что на канве могут размещаться различные изображения и текст.

Модуль Delphi, именуемый Printers, содержит переменную Printer, являющуюся объектом типа TPrinter. Чтобы ее использовать, надо добавить модуль Printers в оператор uses вашей программы. Автоматически он не добавляется.

Рассмотрим некоторые свойства и методы объекта типа TPrinter.

Таблица 24.

Свойство, описание

Canvas

Канва Canvas — место в памяти, в котором формируется страница или документ перед печатью. Canvas обладает рядом свойств, включая Реп (перо) и Brush (кисть), которые позволяют вам делать рисунки и помещать на них текст

TextOut

Метод канвы, который позволяет посылать в нее текст

BeginDoc

Используется для начала задания печати

EndDoc

Используется для окончания задания печати. Фактическая печать происходит только при вызове EndDoc

PageHeight

Возвращает высоту страницы в пикселях

NewPage

Принудительно начинает новую страницу на принтере

PageNumber

Возвращает текущий номер печатаемой страницы

Предположим, вы хотите напечатать текст, используя печатающий объект. Вы можете написать код вида:

Printer.BeginDoc;

Printer.Canvas.TextOut(10,10, 'Я печатаю через объект Printer');

Printer.EndDoc;

Этот код вызывает печать на канве принтера текста «Я печатаю через объект Printer», начиная с десятого пикселя слева и десятого сверху. BeginDoc запускает задание на печать. Текст посылается на канву с помощью метода TextOut объекта Canvas. Метод EndDoc вызывает печать текста и останавливает задание на печать.

Если вы хотите напечатать изображение, хранящееся в компоненте Imagel, это можно сделать операторами:

Printer.BeginDoc ;

with Imagel.Picture.BitMap do

Printer.Canvas.CopyRect(Rect(0,0,Height,Width) ,

Canvas,Rect(0,0,Height,Width)) ; Printer.EndDoc;

Печатающий объект Printer не производит автоматического переноса строк и разбиения текста на страницы. Поэтому печать длинных текстов с помощью объекта Printer требует достаточно сложного программирования. Проще это делать описанными ранее способами или с помощью изложенной в следующем разделе системы QuickReport.