You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 11 VCL中FastReport报表无需外部库显示二维码的方法咨询

在Delphi 11 VCL的FastReport中无需外部库显示二维码的方法

方法1:借助Delphi 11自带QR码组件实现自定义绘制

Delphi 11 VCL原生自带TQRCode组件(位于FireDAC.Phys.QRCode单元),可以直接集成到FastReport报表中:

  • 在FastReport设计器里添加一个TfrxPictureView控件
  • 双击该控件,在OnBeforePrint事件中编写代码:
    uses FireDAC.Phys.QRCode, Vcl.Graphics;
    var
      QRCode: TQRCode;
      Bmp: TBitmap;
    begin
      QRCode := TQRCode.Create(nil);
      try
        QRCode.Data := '需要生成二维码的内容'; // 替换为实际业务数据
        QRCode.ModuleSize := 4; // 调整二维码模块大小,数值越大方块越大
        Bmp := TBitmap.Create;
        try
          Bmp.Width := QRCode.Width;
          Bmp.Height := QRCode.Height;
          QRCode.Draw(Bmp.Canvas, 0, 0);
          (Sender as TfrxPictureView).Picture.Assign(Bmp);
        finally
          Bmp.Free;
        end;
      finally
        QRCode.Free;
      end;
    end;
    
  • 如果需要动态读取数据集字段,把QRCode.Data替换为YourDataSet.FieldByName('字段名').AsString即可

方法2:通过FastReport内置脚本实现

FastReport支持内置脚本,也可以直接在脚本里调用Delphi的QR码组件:

  • 打开FastReport的脚本编辑器,添加引用FireDAC.Phys.QRCode和Vcl.Graphics
  • 在TfrxPictureView的OnBeforePrint脚本中写入:
    var
      QRCode: TQRCode;
      Bmp: TBitmap;
    begin
      QRCode := TQRCode.Create(nil);
      try
        QRCode.Data := '你的二维码数据';
        QRCode.ModuleSize := 5;
        Bmp := TBitmap.Create;
        try
          Bmp.Width := QRCode.Width;
          Bmp.Height := QRCode.Height;
          QRCode.Draw(Bmp.Canvas, 0, 0);
          PictureView1.Picture.Assign(Bmp);
        finally
          Bmp.Free;
        end;
      finally
        QRCode.Free;
      end;
    end;
    

注意事项

  • 确保项目已引用FireDAC.Phys.QRCode单元,这是Delphi自带组件,无需额外安装第三方库
  • 可以通过调整ModuleSize和控件的Stretch属性,适配报表中的显示尺寸

内容的提问来源于stack exchange,提问作者X12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:47:10