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

Лекция№22 Тема: Печать и разработка отчетов

План:

1. Печать с помощью функций файлового ввода/вывода

2. Методы компонентов, обеспечивающие печать

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

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

5. Подготовка и печать отчетов с помощью QuickReport

5.1.Быстрый отчет (QuickRep)

5.2. Специфичные методы

5.3.Специфичные события

5.4. Компоненты отчета

5.5. Основные свойства компонентов

1. Печать с помощью функций файлового ввода/вывода

Печать в Delphi может осуществляться различными способами. Простейший способ — использование обычных функций ввода/вывода в текстовый файл, но связывание выходного потока не с файлом, а с принтером. Этот простейший способ можно использовать для получения оперативных распечаток протоколов какого-то процесса. Предположим, например, что компьютер на заводе подключен к строчному принтеру, чтобы сохранять данные по мере их накопления. Если в компьютере происходит аппаратный отказ, то все данные, собранные к этому моменту, имеются в распечатках. Аналогично, вы, возможно, захотите напечатать простой список, которому не требуется графика, шрифты и другое форматирование, доступное в Windows. Код, использующий этот метод для печати текста, хранящегося в компоненте Edit1, выглядит следующим образом:

var Р : TextFile; begin

AssignPrn (P);

rewrite (P);

writeln (Р,Editl.Text);

CloseFile (P); end;

Здесь объявляется переменная Р типа TextFile. Далее используется разновидность команды Assign — AssignPrn. Она настраивает переменную Р на порт принтера, обращаясь с ним, как с файлом. Затем порт принтера должен быть открыт, что делается командой rewrite. Текст передается в принтер процедурой writeln, a закрывается порт принтера командой CloseFile. Важно закрыть порт принтера для завершения операции печати. По этой команде, как и в случае файла, любой текст, остающийся в памяти, пересылается в принтер, и порт закрывается.

2. Методы компонентов, обеспечивающие печать

Формы в Delphi имеют метод Print, который печатает клиентскую область формы. При этом полоса заголовка формы и полоса главного меню не печатается. Таким образом, можно включить в приложение форму, в которой пользователь во время выполнения размещает необходимые для печати результаты. Если имя этой формы Form2, то ее печать может выполняться оператором

Form2.Print;

Свойство формы PrintScale определяет опции масштабирования изображения при печати. Возможные значения PrintScale:

poNone Масштабирование не используется. Размер изображения может изменяться в зависимости от используемого принтера

poPrintToFit Делается попытка напечатать изображение формы того же размера, который виден на экране

pbProportional Увеличивает или уменьшает размер изображения, подгоняя его под размер страницы, заданный при установке принтера. Это значение принято по умолчанию

Ряд компонентов в Delphi имеют методы, обеспечивающие печать хранящихся в них данных. Например, компонент RichEdit имеет метод Print, позволяющий печатать в обогащенном формате текст, хранящийся в компоненте. В этот метод передается единственный параметр типа строки, назначение которого заключается только в том, что при просмотре в Windows очереди печатаемых заданий принтера эта строка появляется как имя задания. Например, оператор

RichEditl.Print('Printing of RichEditl' ) ;

обеспечивает печать текста компонента RichEditl, причем задание на печать получает имя «Printing of RichEditl».

Печать воспроизводит все заданные особенности форматирования. Перенос строк и разбиение текста на страницы производится автоматически. Длина строк никак не связана с размерами компонента RichEdit, содержащего этот текст.

Компонент Chart, используемый для отображения графиков и диаграмм, также имеет метод Print, обеспечивающий печать. Предварительно может быть выполнен метод PrintPortrait, задающий книжную (вертикальную) ориентацию бумаги, или метод PrintLandscape, задающий альбомную (горизонтальную) ориентацию. Масштабировать размер печатаемого графика можно, вызвав предварительно метод PrintRect:

procedure PrintRect ( Const R : TRect ) ;

в которой параметр R определяет размер области принтера, в которой осуществляется печать.