卡妙的情人吧 关注:33贴子:5,772
  • 4回复贴,共1

Delphi报表控件QuickReport和FastReport的比较

收藏回复

  • 218.59.26.*

1、引言
报表在信息管理系统中有着广泛的应用,例如财务管理系统中的财务报表,人事管理系统中的人员查询报表、统计报表,仓储管理系统中的进货报表、库存报表等等,报表不仅可以以直观的方式向业务人员呈现相关信息,并且能够为决策者分析、决策提供有力的依据。信息系统中的报表相比传统的手工报表,更规范、更清晰、更准确、更有效率,几乎所有的信息管理系统都离不开报表的使用。Delphi作为一种主流的快速开发工具,受到了广大开发人员的喜爱。Delphi与后台数据库配合使用已经成为许多信息管理系统采用的模式,如何在delphi中,选择并使用一个简单、有效、快速的报表控件就十分必要了。Delphi3-Dlephi6中一直采用的是QuSoft公司的QuickReport控件,但是QuickReport是不是能够满足所有的需求呢?在2002年Delphi Informant 杂志评出的读者选择奖项中,其中参加报表工具的评选的人数是最多的(足见报表的重要性),在这一类别中,Digital Metaphors公司的 ReportBuilder以54%的选票获得了第一名。 crushing FR-Software & A.Tzyganenko公司的FastReport以20%的选票获得了第二名。ReportBuilder更是以11%的选票当选本年度最佳产品(Product of the Year),足见它对Delphi开发人员中的影响力。本文将对QuickReport和FastReport报表控件进行某些方面的比较,希望能对读者有所帮助。
2、FastReport的安装
由于FastReport是Delphi的第三方控件,所以只有在安装之后才能使用报表控件。FastReport2.4可以安装在for Delphi 2-7 & C++Builder 1-6环境下,下面简要说明在Delphi6环境下的安装,其他环境下的安装过程类似。.
 把FastReport的安装包解压后放到Delphi的安装目录下,运行Delphi,选择菜单"File/Open..." ,从 ..\FR\SOURCE目录中打开包文件FR6.dpk。在包编辑器中,点击"Compile" 按钮对包进行编译,编译成功后,点击"Install"按钮安装包。安装完成后, "FastReport" 和FR Tools" 标签就会出现在Delphi开发环境中的控件面版中,选择相应标签,就会出现FastReport的报表控件。安装好之后,还需进行环境设置,选择菜单命令ls/Environment options..." 打开Library" 标签,在"Library path" 中加路径..\FR\SOURCE。
3、QuickReport和FastReport的比较
从Delphi中加入报表控件之后到最新的Delphi7之前,QuickReport一直是Delphi附带的报表控件,抛却商业的利益不谈,QuickReport能够长期占领Delphi的报表控件也在一定程度上表明QuickReport在报表处理方面有其独特的方面。但是使用过QuickReport的朋友肯定会有这样的感觉,QuickReport报表在某些方面的功能确实是比较欠缺,比如对于线框的控制、报表单元格内的中文的换行、终端用户对于表格的控制等等。可以说FastReport在这几个方面比QuickReport体现了更强大的功能。下面将详细叙述FastReport在这三个方面的优势。
3.1 FastReport对线框的控制
在实际的应用中,中国式的报表绝大多数都是表格的形式,线框的绘制非常重要,而在QuickReport中,进行线框的绘制似乎不是很方便,不同的线型(水平线、垂直线)采用的是同一个QRShape控件,对每一个字段四周的线框都要进行不同的设置,比较麻烦,并且在预览的时候在不同的显示比例的情况下个别线段可能会出现重合或者断开的情况,虽然在真正打印的时候只要设置的正确确实不会出现重合或断开的情况,但是在预览的时候看上去很不舒服。而FastReport对于线框的处理比QuickReport要好的多,使用Line控件可以很方便的完成水平线、垂直线的绘制,而且不会出现线框重合或者断开的情况。静态报表的情况下,FastReport还包含自动水平线、垂直线的对齐功能,水平线和垂直线的接头处会自动完成对齐,不会出现接头错开的情况。对于动态报表的情况,只要准确设置线框的位置,生成的报表会非常整齐、规范。对于动态FastReport报表,在进行绘制线框的时候必须要注意的一点是:线框必须放置在相对应的区域内,否则设置的线框就不会显示出来了,这一点是跟QuickReport是类似的。



1楼2004-10-10 22:31回复
    • 218.59.26.*
    3.2 FastReport支持中文的换行
    对于中文的报表,不同记录的同一字段可能长度差别比较大(比如人事管理中的单位、职务字段),为了节省报表页面空间,经常要求在单元格内自动换行。而对于中文内容的换行,QuickReport的支持并不如程序员料想的那样进行自动换行,即使设置了WordWrap=true和AutoStrench=false。主要的原因在于QuickReport自身的自动换行机制只有在遇到空格的时候才会进行换行,如果是英文单词的化当然没有问题,碰到空格的时候当然就可以换行了,但是中文就不同了,字与字之间是没有空格的,这样QuickReport在处理的时候并不会在字与字之间断开,因此并不会进行自动换行。如果要在QuickReport中实现中文的自动换行,唯一可行的办法,就是在设置WordWrap=true和AutoStrench=false的前提下,根据字段所占用的宽度对字段进行处理,处理的办法很自然,只要在需要自动换行的中文字段中的特定位置添加空格就可以了。编程实现稍微有些麻烦,需要通过字段在报表中所占用的宽度、报表中字段的长度、采用的字体等参数来进行计算在文字宽度到达报表中表格宽度的时候在原字段中添加一个空格,这样就可以实现自动换行的功能了。但必须注意的是,这种操作必须只对报表进行操作,而不能修改库中的数据。而在FastReport中对于自动换行的设置就简单多了,只需设置相关字段的WordWrap属性为true即可,简单方便。
    3.3 FastReport支持最终用户的修改
    即使在开发的时候做得如何全面,仍然不能保证最终用户会提出新的要求。而这种修改往往是小修改,比如日期、标题、表头等的修改。这种情况下,把修改的权限交给用户就可以了。在FastReport中,只需要在Delphi工程中添加一个frDesigner控件,则工程中所有的报表都具有了最终用户可以修改的功能。在这种情况下,只需要双击报表,就会出现报表的设计界面,在这个界面中,可以对报表的所有对象进行相关属性的设置,用户可以方便的完成对最终报表的修改。
    除了上述的三点之外,FastReport还具有很多优点,比如:直接编译在Delphi EXE中,不需要动态链接库;支持JPEG(使用Delphi类库)和GIF(使用RX类库);包含图表,图表,条形码,带阴影的文本;报表生成的页数无限制;在报表预览中查找文本等等。
    4、结论
    根据与QuickReport报表的比较可以得出这样的结论,FastReoport报表控件的功能更丰富、性能更强大,是比QuickReport更适合创建管理系统报表的控件。
    


    2楼2004-10-10 22:31
    回复
      hao


      IP属地:广西禁言 |3楼2004-10-11 02:04
      回复
        • 211.91.101.*
        QuickReport的自定义纸张方面好像也有点问


        4楼2007-01-19 16:53
        回复
          • 218.94.87.*
          请脚下 Rx类库指的是~?


          5楼2009-06-23 16:00
          回复