Кажется, что большинство приложений Delphi подразделяются на два класса: приложения, ориентированные на базы данных, которые используют системы отчетов для всех своих нужд печати, и приложения, которые не нуждаются в печати.
Для тех, кто находится в исключенной середине (печать без базы данных, система без отчетности), есть компоненты, которые могут помочь. Например, я был клиентом Express Express System Express с самого начала жизненного цикла этого продукта. Для печати любого компонента (сетка, электронная таблица и т. Д.), Который также является компонентом системы экспресс-печати Developer Express.
Пока все хорошо. То, что я ищу, - это альтернативный способ (в Delphi 2010) генерировать одну или две распечатки страницы, которые обычно содержат:
- Заголовки и заголовки
- Верхние и нижние колонтитулы страницы
- Возможность добавить большую картинку, которая является основной на странице. В данном случае изображение (растровое изображение) - это нарисованная мной диаграмма.
- 100% пуленепробиваемое качество печати на всех версиях окон, известных человечеству, со всеми типами принтеров, известных человечеству.
[ОБНОВЛЕНИЕ: Ранее у меня были странные глюки с компонентами печати Developer Express на цветных лазерных принтерах, и теперь я очень надеюсь, что смогу разобраться. ] ... все же я думаю, что было бы разумно взглянуть на другие компоненты печати, чтобы моя «панель инструментов» возможных решений для моих текущих и будущих проектов могла включать простой надежный способ создания страниц принтера.
Так что я действительно мог бы использовать предложения. Я предвзято отношусь к системам отчетов, даже к системам на основе кода, но я рассматриваю быстрые отчеты, хотя мое использование для них было бы далеко от типичных сценариев сценариев использования. На моих печатных страницах нет наборов данных строк и столбцов.
Обновление / Финал: похоже, FastReports великолепен. Он может легко переносить любые данные из памяти вашего приложения (например, изображения) на страницы текущего отчета, например:
procedure TForm2.Button1Click(Sender: TObject);
var
pic:TfrxPictureView;
begin
pic := frxReport1.FindObject('Picture1') as TfrxPictureView;
pic.Picture.Assign(Image1.Picture);
frxReport1.ShowReport;
frxReport1.Print;
end;