Инструменты для печати TDBGrid
Оформил: DeeCo
В этом обзоре
рассматриваются компоненты, позволяющие быстро (без применения специальных
генераторов отчетов) распечатать содержимое TDBGrid'а.
Примечание: Во внимание не
принимались особые "навороченные" Grid'ы (например компоненты
EhLib v.1.56 ( сайт Torry) ,
ExDBGrid (сайт DelphiCity) и многие другие) , которые
в частности могут печатать сами себя. Нужен был именно
компонент-связка, который печатает содержимое для любого
наследника TDBGrid. Использовались три компонента с сервера www.torry.ru. Раздел VCL
страница Grids -> Other и страница Print Vcl
-> Print Tools. Все компоненты тестировались в одинаковых
условиях: Windows NT + Delphi 5
Название
Print DBGrid v.1.0
URL
Раздел VCL страница Grids ->
Other http://www.torry.ru/gridsother.htm http://www.torry.ru/vcl/grids/other/oddataprn.zip
Распространение
ShareWare, с исходными кодами
IDE
Delphi 3 ; У меня работал в Delphi 5.
TDataPrintеr Компонент TDataPrintеr настраивается на
TDataSource. Несмотря на то, что в описании от автора обещается печать
набора данных ("Well here is a component that will print a DBGrid with any
data in it. " ), никакой связки с визуальными компонентами не предлагается.
Собственно и в названии компонента видно, что печататься будут данные, а не
Grid. Так оно все и получилось :о)
Оформление печати:
- Вывод стандартного диалога (PrintDialog - настройка и выбор принтера)
регулируется свойством PrintDialog:Boolean;
- Основные детали отчета: заголовки колонок(Header) и сами
данные (Body);
- В качестве дополнительных деталей отчета предлагается Title(String)
и Script(TStringList);
Общий формат отчета:
Title
Script1 Script2 ... ScriptN
HeaderColumn1
HeaderColumn2 ...
Column1Record1
Column1Record2 ...
...
...
Column1RecordM
Column1RecordM ...Никакой
сетки не подразумевается.
- Для всех элементов отчета (Header, Body, Title и Script) в
отдельности настраиваются шрифты;
- По желанию может автоматически выводится в шапке время печати(TimeStamp) и
номер страницы.
Сами значения Title и Script задаются в run-time, при
печати данных: DataPrinter.Print( Title , Scipts
);
К недостаткам можно отнести следующее: Хотя автор и обещает, что
печататься будут "любые данные" ("...with any data in it"), при печати
memo-полей длина текста ограничена свойством DisplayWidth соответствующего поля
и одной строкой, что несколько неудобно. И вывести на печать изображение из
поля, содержащего графику мне тоже не удалось. С точки зрения оформления -
отсутствует возможность печати сетки. Но может это и не есть недостаток.
В качестве резюме: Компонент очень прост в использовании.
Наличие исходных текстов дает возможность довольно легко добавить в отчет
некоторые детали оформления. Так что для простых по функциональности и
внешнему виду "быстрых" отчетов этот компонент подходит очень хорошо.
Название
LPTGrd / LPTBGrd v.1.0
URL
Раздел VCL страница Print VCL -> Print
Tools http://www.torry.ru/printtools.htm http://www.torry.ru/vcl/print/printtools/lptgrd.zip
Распространение
Коммерческий; Trial (work while IDE is running)
IDE
Delphi 1,2,3 ; У меня работал в Delphi 5
Довольно интересный компонент. Настраивается на TDBGrid.
- Предлагается режим Preview(свойство Destination),
правда без реализации функции zoom.
- Можно изменять параметры сетки (настраивать толщину и наличие
горизнтальных и/или вертикальных линеек сетки).
- Можно отдельно настроить цвета фона для заголовков колоноки для
details (самих данных отчета).
- В качестве дополнительных деталей отчета можно использовать Header,
PageFooterCenter, PageFooterLeft и PageFooterRight. Для каждого элемента
отчета (включая заголовки колонок и их содержимое) можно отдельно
настраивать шрифты.
- Нормально печатается графика.
- Можно начинать печать не с первой страницы.
- По желанию - вызывать (или не вызывать) стандартный Print
Dialog для выбора принтера и настройки параметров печати.
Поля типа memo печатаются в одной строке, но назвать это
недостатком нельзя, так как автор обещал напечатать TDBGrid, он и
печатается :о)
Но вот что мне показалось не совсем корректным в этом
компоненте: Несколько экспериментов с разными данными для этого
компонента показали, что хотя и обещается печать грида, но для вывода
названий полей используется поле TField.DisplayLabel и для ширины
колонки отчета поле TField.DisplayWidth. Логичнее (и удобнее !)
было бы использовать в качестве названия колонки именно
Columns.Title.Caption, а для ширины колонки Columns.Width.
Вот тогда печатался бы как раз тот обещанный TDBGrid, который можно
перестроить в run-time и напечатать так, как он и выглядит. И
еще, при использовании деталей PageFooterCenter,
PageFooterLeft и PageFooterRight надо быть осторожнее, так
как никаких ограничений на их ширину нет и никакого взаимодействия
(внутренних проверок) между ними тоже нет. То есть, задав значения этих
полей очень длинными, можно получить некрасивую картину из наложенных друг
на друга строк.
Резюме: В общем, очень удобный компонент, с множеством
настроек, что дает довольно хорошую возможность для оформления отчета.
Название
QRByDataSet and TQRByGrid v.1.00
URL
Раздел VCL страница Report -> Report
Tools http://www.torry.ru/reportdesigners.htm http://www.torry.ru/vcl/reports/reportdesigners/reportds.zip
Распространение
Свободный, с исходными кодами
IDE
Delphi 3,4,5 ;
Поначалу меня порадовали эти компоненты. Довольно просты в применении
и работают аккуратно. Как видно из названия один настраивается на
TDataSet, другой на TDBGrid. Для их использования
обязательно должен быть установлен QuickReport, для формирования
отчета для печати используется именно он. Так как QuickReport
есть в стандартной поставке Delphi, то недостатком это считать нельзя.
Зато можно легко пользоваться режимом Preview с возможностью выбора
и настройки принтера, ну и так далее.
К недостаткам можно отнести следующее:
- Внешний вид отчета "зашит" в самом коде компонентов и
никаких вариантов настройки оформления не предлагается.
Выбор
цветовой гаммы и шрифтов заботливо взяли на себя разработчики :о) С
точки зрения простоты настройки лучше бы было устроить некую систему
умолчаний, но все же разрешить самому программисту решить, как именно
должен выглядеть его, пусть и очень простенький, отчет.
- Компоненты берут заголовки для стобцов отчета из полей
DisplayLabel. Это естественно для печати TDataSet, но
почему же и при печати TDGgid названия заголовков тоже берутся
оттуда, а не их полей Columns.Title.Caption? Если уж обещать
напечатать RDBGrid, то на бумаге он должен быть очень похож на то, что
видно на экране.
- Не печатаются (просто игнорируются) поля типа Blob , ни
memo-текст, ни графика.
И тем не менее компоненты очень просты в использовании, практически
не требуют никаких настроек и для "быстрого" и простого отчета вполне
годятся.
Название
Print Record v.1.0
URL
Раздел VCL страница Print VCL -> Print
Tools http://www.torry.ru/printtools.htm http://www.torry.ru/vcl/print/printtools/printrec.zip
Распространение
Свободный, исходные коды
IDE
Delphi 2,3 ; У меня работал в Delphi 5
Этот компонент функционально довольно сильно отличается от предыдущих, но
мне он понравился и я решила включить его в это обозрение ( вдруг кому-то
понадобится именно такой вариант печати из Grid'а). Так вот, компонент
TPrintRecord печатает только одну, текущую запись того набора
данных, который Вы ему укажете. Настраивается на TDataSource В
качестве дополнительных деталей отчета предлагается многострочный
Header(TStringList), для которого можно отдельно настроить шрифт. В
заголовке можно добавить картинку (например логотип).
Общий формат отчета таков:
<картинка>Header header ... и
так несколько строк
Название поля №1:
Содержание поля...
...
...
Название поля №n:
Содержание поля...
В качестве резюме: Если строка набора данных представляет собой
нечто вроде "личного дела" или "учетной карточки" и т.д., то такой вариант
печати довольно удобен. Ну а наличие исходных кодов дает полный простор для
самовыражения и вариантов его реализации.
К сожалению не нашлось такого компонента, применение которого бы полностью
решило поставленную задачу, без переделки его исходного кода.
|