一直也没接触到什么复杂的报表,都是一些简单的报表,在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. .NET跨平台之旅:将示例站点从ASP.NET 5 Beta5升级至Beta7

    9月2日,微软发布了ASP.NET 5 Beta7(详见Announcing Availability of ASP.NET 5 Beta7).其中最大的亮点是dnx已经可以完全基于CoreCLR运行 ...

  2. 谈谈我的入门级实体框架Loogn.OrmLite

    每次看到有新的ORM的时候,我总会留意一下,因为自己也写过一个这样的框架,人总是有比较之心的.我可能会down下来跑一跑,也可能不会这么做,这个取决于跑起来的难易程度.我是很懒的,有XML配置或其他稍 ...

  3. 分布式缓存Redis使用心得

    一.缓存在系统中用来做什么 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景. 2. 海量数据存储, ...

  4. WPF资源字典的使用【转】

    资源字典出现的初衷就在于可以实现多个项目之间的共享资源,资源字典只是一个简单的XAML文档,该文档除了存储希望使用的资源之外,不做任何其它的事情. 1.  创建资源字典 创建资源字典的过程比较简单,只 ...

  5. 使用Powershell链接到Office 365

    今天主要讲使用Powershell管理Office 365 可以分为office365用户管理,Exchange Online的管理等 1. 使用Powershell 链接到office 365 用户 ...

  6. Python操作Mysql之基本操作

    pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...

  7. Dom4j把xml转换成Map(非固定格式)

    将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...

  8. js分页小结

     今天解决了JS分页的问题1 页码 给每页的内容套一个相同的类名 通过选择器加上.length或者.size() 来获得总页数2当前页的页码可以使用each(function(index,DOMsss ...

  9. html5中常见的全局属性

    1.contentEditable属性 1.功能说明 (1)功能:允许用户编辑元素中的内容 (2)说明:是一个布尔值,false是不能编辑,true为可编辑 该元素还隐藏一个inherit状态  也是 ...

  10. ASP.NET WEB API路由机制

    (一)路由原理 (二)路由设计架构分析 RouteBase