Printing a large number of pictures

edited May 2020 in FastReport VCL 5

Hello,


I am trying to print a large number of bitmap icons, but report throws "Canvas does not allow drawing" exception and freezes after hundreds of lines.


unit Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, frxClass;

type
  TMainForm = class(TForm)
    Report: TfrxReport;
    btnShowPreview: TButton;
    edtLines: TEdit;
    Label1: TLabel;
    procedure btnShowPreviewClick(Sender: TObject);
    procedure ReportManualBuild(Page: TfrxPage);
    procedure FormCreate(Sender: TObject);
  private
    procedure SetText(Name: String; Text: String);
    procedure SetIcon(Name: String; Icon: TGraphic);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

uses
  StockIconUtil;

procedure TMainForm.btnShowPreviewClick(Sender: TObject);
begin
  Report.ShowReport;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  Randomize;
end;

procedure TMainForm.ReportManualBuild(Page: TfrxPage);
var
  Line, Column: Integer;
begin
  for Line := 1 to StrToInt(edtLines.Text) do
  begin
    SetText('meLine', 'Line ' + IntToStr(Line));

    for Column := 1 to 33 do
      SetIcon('Picture' + IntToStr(Column), TStockIcon.GetBmp(Random(100)));

    Report.Engine.ShowBandByName('IkonsBand');
  end;
end;

procedure TMainForm.SetText(Name: String; Text: String);
var
  C: TfrxComponent;
begin
  C := Report.FindObject(Name);
  TFrxMemoView(C).Memo.Text := Text;
end;

procedure TMainForm.SetIcon(Name: String; Icon: TGraphic);
var
  C: TfrxComponent;
begin
  C := Report.FindObject(Name);
  TFrxPictureView(C).Picture.Assign(Icon);
end;

end.

Thanks for any help.

Dominik

Comments

  • What version of FR do you use?

    Try to set TfrxReport.EngineOptions.UseFileCache to True

    Try to test latest FR 6.6.16 too

  • I am using FastReport 5.0. I've tried it in FastReport 6.0 Trial as well.

    UseFileCache option or other Cashe option and Preview options didn't help me.

  • Create small demo project and send it to support@fast-report.com

Leave a Comment