На этом шаге мы рассмотрим компоненты TQRTextFilter, TQRCSVFilter, TQRHTMLFilter.
В ряде случаев требуется преобразовать сгенерированный отчет в файл определенного формата, чтобы передать его в другую программу.
Например, оптовый поставщик книг часто рассылает по электронной почте своим партнерам прайс-листы с перечнем имеющихся в наличии книг. Разумеется, если у партнера есть хотя бы простейшая программа с доступом к окну предварительного просмотра отчета, наилучшим способом экспорта является преобразование отчета в файл собственного формата *.qrp и отсылка (передача) этого файла партнеру с тем, чтобы он, пользуясь упомянутой программой, раскрыл окно предварительного просмотра и загрузил в него отчет из файла. Однако по разным причинам у партнера может не быть нужной программы просмотра отчета. Для такого случая в компоненте TQuickRep предусмотрен специальный метод ExportToFilter, с помощью которого программа может преобразовывать отчет в текстовый файл (*.txt), в текст с двойными кавычками (*.cvs) или в гипертекстовый файл (*.htm).
Для экспорта отчета в "чужой" формат предусмотрены фильтрующие компоненты TQRTextFilter, TQRCSVFilter, TQRHTMLFilter. Их использование не представляет никаких проблем: просто поместите их на отчет, и тогда после щелчка в окне предварительного просмотра на кнопке SaveReport в раскрывающемся списке можно будет выбрать тип сохраняемого файла (рис.1).
Рис.1. Список выбора типа файла для сохраняемого отчета
Экспортировать файл можно не только с помощью указанных выше компонентов и окна предварительного просмотра, но также программным обращением к методу TQuickRep.ExportToFilfer, например:
uses QRExport; //Для программного экспорта ссылка на этот модуль обязательна! procedure MyForm.ButtonClick(Sender: TObject); var AExportFilter: TQRHTMLDocumentFilter; begin AExportFilter: TQRHTMLDocumentFilter.Create(‘REPORT.HTM’); try MyReport.ExportToFilter(AExportFilter) finally AExportFilter.Free; end; end;
Единственным параметром обращения к методу является объект класса TQRExportFilter, точнее – одного из его специализированных потомков: TQRHTMLDocumentFilter, TQRASCIIExportFilter и TQRCommaSeparatedFilter. Все эти классы описаны в модуле QRExport.
Приведем пример программы демонстрирующей работу этих компонентов. Для этого изменим пример шага 11 "КомпонентTQRExpr", добавив на форму отчета компоненты TQRTextFilter, TQRCSVFilter, TQRHTMLFilter.
Например, отчет экспортированный в текстовый файл имеет следующий вид:
Рис.2. Отчет, экспортированный в текстовый файл
Текст этого примера можно взять здесь.
На следующем шаге мы рассмотрим компонент TQRSubDetail.