一直也没接触到什么复杂的报表,都是一些简单的报表,在DelphI下使用QuickReport一般也就能满足需要了,由于公司现在需求的变化,对条码扫描提出了新的要求,主要是扫码要包含更多地内容,以前的一维码显然不能完全满足,再说二维码也是一种趋势,故而需要解决二维码的问题,网上搜了一下,方式有多种多样,我花了3天时间找了很多,也尝试了很多。也经历了很多失败!总结一下在Delphi下实现二维码主要有三种方法:

1、使用PtImageRW.dll和PtQREncode.dll动态连接库,使用uQRCode生成二维码图像,如此就可以在报表中予以打印了,具体如何用uQRCode实现绘制二维码,本人水平太低,无法参透;结合QuikReport就可以实现打印二维码了,但此种有一个问题就是不支持中文,如source1(整合到FastReport中也无法实现对中文的支持);

2、还有一种就是生成控件,利用ZINT制作的控件,如source2;此种有个问题就是无法在报表中使用(也许是我不会用),只可在窗体上显示,当然理论上说能在窗体上使用就完全可以用于打印报表了,可问题时我不会,哎,还是技术水平太低。还有一种叫Han-sof 2D Barcodes的控件,我可以安装,但却无法使用,无法生成二维码到图片。可上网搜索一下下载这个控件安装一下,有搞定的与我共享一下。

3、用ZINT整合到FastReport中,也是下面我要叙述的形式:source3。完全可以满足我的需求。

例子实现了对采购入库数据的分组批量打印,加入了二维码的使用,当然实际工作当中制作入库单基本上用不到批量打印的,一般都是一单一打,但在我这里没办法,必须设计这样的功能,历史遗留问题吧,这里也牢骚一下吧!

如做一些延伸,很多的打印都和这个有很多的类似之处,我说的是并不太复杂的应用,至于什么更复杂得我想FS也能搞的定,这里做一个总结是希望对和我一样水平的人提供一些帮助吧,也许现在很多人根本不用Delphi了,权且当作自己的一个笔记吧!

入库单样式如下:

一、环境及所用组件程序

1、Delphi2010

2、FastReport4.9 for 2010

3、zint.dll

4、frx2DBarcode.pas

5、frx2DBarcodeRTTI.pas

6、uBitMapOverriden.pas

7、ufrxZintBarcode.pas

8、uRegZintBarcode.pas

9、uZintInterface.pas

二、安装FastReport4.9 for 2010

注意:安装有一定要新建一个工程,并放置一个frxReport1控件,看看是否可以正常运行,如果不能正常运行,那么到安装目录检查一下权限,将EVERYONE添加到文件夹权限,应该就可以了,我的就是这样。一定要确保frxReport可以正常运行,否则一切都是白搭。

在2010下安装,直接下一步到底就可以了,并不需要重新编译;

Fastreport5在安装的时候无法生成相应版本的文件进行编译,不知道是何原因。

三、zint.dll与相关文件

1、将Zint.dll复制到工程文件的当前目录及windows的system32目录下;不过好像不复制在当前目录页不要紧,谨慎起见还是放一个吧!

2、在单元文件中引用frx2DBarcode,即可调用二维码;我参考网上的例子,多引用了很多,具体如下,具体什么意思,也没有细细研究。反正多几个也没坏处frxDesgn, frxClass, frxDCtrl, frxChart,frxDBSet,  frxRich, frxBarcode,frxOLE,  frxCross, frxDMPExport, frxExportImage,frxExportRTF,  frxExportXML,frxExportXLS, frxExportHTML, frxGZip, frxExportPDF,  frxChBox, frxExportText, frxExportCSV,frxExportMail,  frxADOComponents, frxCrypt,frxExportODF, frxGradient,frx2DBarcode;

3、窗体中加入以下控件。

属性设置参考例程

4、打开设计

procedure TMain_Form.RzBitBtn1Click(Sender:TObject);

begin

frxReport1.DesignReport;

end;

5、打开预览

frxReport1.Clear;

frxReport1.LoadFromFile('group.fr3');

frxReport1.DataSets.Clear;

frxReport1.DataSets.Add(frxDBData);

frxReport1.ShowReport;

frxReport1.Modified:=false;

6、设置ADOquery1的SQL为“select *from data_in order by bill_code_in desc”;再设置Active为True;

7、设置frxDBData的DataSet为ADOQuery1;右击控件可以打开Editaliases对话框,如此在设计其中就可以使用数据源了。当然在设计中也可自己设定。

UserName就是在FastReport下课见的数据连接名。

四、设计报表

注意:此种用法只能在运行程序文件时才能设计报表,否则直接Delphi环境下的控件是无法显示含有二维码的设计页面的。

运行程序,单击设计即可打开“设计”界面;

1、双击页面可以打开此对话框,选择Largeheight in design mode可以最大限度显示设计的的幅面,不选择此项目,添加几个Band后你就会发现有的Band就找不到了!

2、在FASTREPORTX下用到的控件及布局区域;

3、page设计模式,主要用到Header、GroupHeader、MasterData、GroupFooter、PageFooter

4、添加完MasterData后,双击该BAND,如下图选择,之后再MasterData的右上角出现frxDB,表示数据选择成功

5、双击GroupHeader,选择bill_code_in作为筛选条件;Options如下,之后右上角显示frxDB.”bill_code_in”:

6、在各Band添加数据,直接将右边的字段拖入相应区域即可,从这一点来看还是有优势的。

五、注意事项

(1)页脚以形式显示,必须选择Report的DoublePass属性为True,否则显示总页数位0,记得插入那个不带#好的page和totalpage,带#好的事表示全部,试一下就知道什么意思了。

(2)如果需要在每页都显示Header,则在设计时选择ReprintOnNewPage为True

(3)在使用到frx2DBarcode.pas文件时可能出现无法加载,即便已在USE里做了引用,因此最好的办法就是直接加入到项目里来。Add to project

(4)在Delphi下如何改变FastReport的控件属性。

TfrxMemoView(frxReport1.FindObject('memo16')).Text:=’设定的内容’

(5)二维码大小调整

二维码大小调整可以在设计模式下设置参数AutoSizeZoom改变,也就是放大的比例;但这样容易出现一个在你批量打印的时候滚动鼠标你会发现二维码底部会少一小部分,也就无法扫描了,不知道打印是否有影响。

我是通过设置代码来完成,我觉得这样更方便一下,也不会出现上面的情况。

备注:

1、fastreport for 2010是我用的,可以正常使用也是例子里用到的4.9版本

2、fastreport5 fordelphi7,已经好久不用7了,故也没测试,这是下载到的!测试成功的告诉我一下!

3、fastreport5 for xe8,我朋友测试通过的,也是他发给我的,但在我的xe8下就是不行,可以看到控件,但一运行,就报错,还没时间研

究,我记得在装XE8的时候是自带了fastreport5的,但并没有二维码的选项,我是卸载了自带的,然后再安装的,然后出现了一系列的问题,实在没时间,因为大部分程序是在2010下的,还没时间向XE8切换,不知道是不在安装的时候不能安装自带的FS5,我朋友在第一次安装的时候就没有选择,然后手动安装的,效果很好!

有知道fastreport5如何在2010下用的,麻烦指教一下!

4、source1-3,前面有说过了,主要是一些例子,我所总结的三种方法,也不知道对不对!

5、zinBarcode文件里也是一个例子,也是用fastreport,可以比较完美的显示中文fastreport,但二维码不能显示中文,设置成中文即报错。

感觉FastReport的功能实在是太强大了,但好多功能还不太会用,以后愿意与大家多交流这方面的信息!

联系方式:jacdfb@163.com;qq:505689211;

资源下载:http://download.csdn.net/detail/daifubing/8957447

转自: http://www.voidcn.com/blog/daifubing/article/p-4550801.html

(转: daifubing的博客 )Delphi二维码中文支持、分组、批量打印经验小结的更多相关文章

  1. Delphi 二维码生成

    Delphi 二维码生成 http://download.csdn.net/detail/warrially/7370171

  2. Delphi 二维码产生和扫描

    Zint用于产生二维码. Zxing用读取二维码. VFrames.pas和VSample.pas用于摄像头. 另附带摄像头相关的类库,也可用开源的dspack也可用于摄像头的需求. 以上为开源的信息 ...

  3. 【VB.NET】利用 ZXing.Net 生成二维码(支持自定义LOGO)

    有任何疑问请去我的新博客提出 https://blog.clso.fun/posts/2019-03-03/vb-net-zxing-net-qr-maker.html ZXing .NET 的项目主 ...

  4. jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO

    描述: jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码.此插件是能够独立使用的,体积也比较         ...

  5. javaScript生成二维码(支持中文,生成logo)

    资料搜索 选择star最多的两个 第一个就是用的比较多的jquery.qrcode.js(但不支持中文,不能带logo)啦,第二个支持ie6+,支持中文,根据第二个源代码,使得,jquery.qrco ...

  6. JqueryQrcode生成二维码不支持中文的解决办法

    JqueryQrcode.js有一个小小的缺点,就是默认不支持中文. 这跟js的机制有关系,jquery-qrcode这个库是采用 charCodeAt() 这个方式进行编码转换的, 而这个方法默认会 ...

  7. JS生成二维码,支持中文字符

    一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...

  8. 生成二维码的js以及调用打印插件

    插件: qrcode.js 插件下载网址:http://code.ciaoca.com/javascript/qrcode/ 用法实例: <script type="text/java ...

  9. QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式

    目录 功能介绍 常见问题 效果图与示例 apk Gradle 依赖 布局文件 自定义属性说明 接口说明 关于我 功能介绍 根据之前公司的产品需求,参考 barcodescanner 改的,希望能帮助到 ...

随机推荐

  1. 图片轮播图插件的使用 unslider!!!

    1.百度图片轮播图unslider,第一个就会出现jquery unslider轮播图,点击进去,下载网站提供的文件,解压,内部有我们需要使用的各种js,图片等. 2.在自己的eclipse或者int ...

  2. .NET添加时间戳防止重放攻击

    如过客户端在向服务端接口进行请求,如果请求信息进行了加密处理,被第三方截取到请求包,虽然第三方无法解密获取其中的数据,但是可以使用该请求包进行重复的请求操作.如果服务端不进行防重放攻击,就会参数服务器 ...

  3. jQuery之Ajax--辅助函数

    1.这些函数用于辅助完成Ajax任务. 2. jQuery.param()方法:创建一个数组或对象序列化的的字符串,适用于一个URL 地址查询字符串或Ajax请求.    我们可以显示一个对象的查询字 ...

  4. 安全稳定实现redis cluster自动化迁移

    背景 目前redis集群最火的是codis和redis cluster(官方),但官方自带工具并没有支持密码操作.那么需要密码认证使用redis cluster集群的同学要仔细看了哦. 相信大家很多人 ...

  5. java基于socket的简单聊天系统

    /*=============服务端================*/ /** * 服务器程序 在9999端口监听 * 可以通过控制台输入来回应客户端* @author xiaoluo* @qq 3 ...

  6. 理解C# 4 dynamic(2) – ExpandoObject的使用

    ExpandoObject的使用非常简单,很容易入手.上一篇里面已经有详细的介绍了,可以看这里(理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic ...

  7. 由Memcached升级到 Couchbase的 Java 客户端的过程记录(三)

    采用之前的源码运行后,我们发现 只有一个配置信息 即servers=127.0.0.1:11211,即 Couchbase Server的服务所在ip 和端口,此时数据直接存在 default 中 根 ...

  8. js中let和var定义变量的区别

    let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781671 声明后未赋值,表现相同 (fun ...

  9. Google 地图 API V3 之事件

    Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...

  10. Texstudio中文乱码问题

    参考 http://blog.csdn.net/lanbing510/article/details/8723619 1. 用XeLatex编译,这样生成的pdf没有乱码 2.在texstudio中E ...