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
相关产品推荐
相关产品推荐

