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

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.