首页  编辑  

Print.打印

Tags: /超级猛料/   Date Created:

报表作为系统信息的表现形式之一,是大多数应用系统,特别是 MIS 系统的重要组成部分。是否具有一个好的打印功能,往往从一定程度上关系到系统的成败。然而,自 Delphi 推出以来,其报表功能从来就没有能够真正满足过国人的需要,也许是中国人的报表太复杂了,是不能指望外国人加以解决的。

        Delphi 的第一代打印工具,是 Delphi1.0 2.0 版本中作为外挂系统的 ReportSmith ReportSmith 是一个可视化的报表制作工具,支持表单型、列表型、标签型、主从型报表的制作和打印,而且有可视化的查询编辑工具,应该说是相当强大和方便的,程序设计人员将设计好的报表存为文件,随应用程序一起交付给客户。 ReportSmith 在打印报表时,除了这些报表文件外,还需要有 ReportSmith Runtime 的应用程序才能够打印,因而在制作安装程序时,要把 ReportSmith Runtime 一起安装在用户的机器上,打印时,系统启动这个 Runtime ,负责将报表文件装载且打印出来,让人感觉不太方便,而且,报表一旦制作好,用户可以控制的东西就非常有限了,动态制作报表更是不可能的。

        Delphi 3.0 版本以后,原 Borland 公司推出了其第三方提供的第二代打印工具 QuickReport QuickReport 首次以控件的方式出现在 Delphi 的编程环境中,使编程人员通过"拖、拉"方式实现报表的制作和打印,并且将报表的内容以 Band 的方式组织在一起,用户可将各种可打印控件(文本、数据库字段、图形、图象等)放在 Band 上,根据当前纸的大小进行打印。它支持 ReportSmith 所支持的大多数功能,给人以耳目一新的感觉。然而 QuickReport 的缺点也是很多的。首先是系统不够稳定,如果您在用 QuickReport 开发报表打印程序时,出一些非法操作,或者预览跟打印不一致等,本论坛中的一部分问题或者疑惑跟此有关;其次功能虽多,但不完善。比如列表方式的报表,不能提供列间的分隔线,这也是 Band 方式的局限。再比如,打印对话框中不能够设置打印范围,实现该功能,要用户在程序中用 PrintDialog 自己设定。其实, QuickReport 的设计思想还是很有借鉴之处的,现在的 ReportBuilder FastReport 中都有 QuickReport 的影子。如果打印报表不是太复杂, QuickReport 还是完全可以胜任的。

       正是"乱世出英雄",不满现状的高手们推出很多优秀的作 品,各有自己的优缺点,与 QuickeReport 一起互相补充,形成鼎足局面。根据现有的报表处理的工具,目前解决打印功能的方案(表 1 )大体分为以下几类:

        1 、集成在 Delphi 中"所见即所得"方式。代表作品有 Fast Report Report Builder AceReport

        2 、外挂编辑器方式。代表作品有 ReportSmith EReport

        3 、采用打印 Form 的方式。代表作品有 PrintAtOnce ScreenReport

        4 OLE 方式调用 Word Excel

        5 、底层直接调用 Printer 。代表作品有 DJPrinter

        6 、用 HTML Table 方式。代表作品有 HTMLReport 。用 HTML Table 方式,也不失为一个好的解决方案,用户可以自己编辑、保存,而且通用,如果再加上类似于 ASP scripts 控制数据,应该还是不错的。