QuickReport基本知识

原创 2002年08月05日 10:39:00
一、 简单了解各控件功能

  以下是各控件最简单的使用功能,其他功能依具体的实现而介绍。

  TquickRep:带有坐标,作为其他报表控件(如TQRBand)的容器,它的Band属性可以自动添加各种类型的TQRBand.

  TQRLabel:打印静态的文本(即不是根据数据库值来改变的),作用象Tlabel , Caption的内容就打印出来的内容。

  TQRDBText:打印数据库字段值,一个值一行。作用象TDBText.把它的DataSet , DataField分别赋予Table1,Company时,将打印Table1所指向的表的Company字段的内容。

  TQRSysData:打印系统信息如时间,页码,报表头等。

  TQRMemo:非常象TQRLabel,只是它可以打印多行,也是打印静态数据。

  TQRRichText:打印RichText格式,能够连接到一个Form上的RichEdit控件并打印它的内容,不过必须是32位版本的。

  TQRShape:打印方框、圆和垂直、水平线。

  TQRImage:打印静态的图片,包括(BMP,WMF,ICON).

  TQRDBImage:从数据库接收图片。

  TQRBand:用来确定报表的不同位置应该显示什么内容,它上面可以放控件(参见二)。

  TQRGoups:Groups可以不限级别的组操作。当你连接了几个datasets到报表时可以通过Groups成组的对dataset进行操作。

  二、 报表的控件摆放循序

  出现在所有页上的标题(PageHeader)

  标题(只有首页才有)(Title)

  所有列的标题(ColumnHeader)

  记录的内容,一个字段一列(Detail)

  摘要(最后一页才有)(Summary)

  出现在所有页上的页脚(PageFooter)

  这些根据设置不同的Band(不是控件,一种类型而已,在其上面可以放其他控件)来定位。总共有六种Band。

  三、 一个简单的例子

  这个例子制作打印一张表的部分字段名及该字段数据内容的报表。

  建立一个新project

  放一个TTable到Form上,DatabaseName设为BCDEMOS,TableName指向Customer表,Active设为true.

  放一个TquickRep控件在Form上,DataSet属性为Table1.(即要显示上边Table1所指向的表的内)。

  展开TquickRep的Bands属性,设HasDetail为true,这时自动增加个detail band(一个TQRBand控件,故也可以直接放一个TQRBand控件,BandType属性设为detail就行了)。

  放一个TQRDBText控件在detail band上面,设DataSet指向Table1,DataField指向Company。第四步是设置在报表的什么位置显示什么类型的数据,而TQRDBText则具体实现。

  选TquickRep控件,按右键,选择”Preview”预览,应该看到表Customer的字段Company的所有字段值。

  到这一个简单的例子就OK了,程序实现预览及利用TQRuickRep自带的打印功能只须在Form中加一个按钮,它的OnClick事件为:QuickRep1->Preview();

  四、一个使用TQRGoups、TQRExpr控件的报表

  该报表先列出州名,接着列出该州的所有公司及公司总数,一个州列完后空一行(groups中断),列出新的州名,接着列新州下的所有公司,没有填州名的公司统一列在Unknown state下面。

  建立一个新project。

  放一个Tquery在Tquickrep上,其SQL属性为:select * from customer order by State,Company;(即根据州、公司排序),DatabaseName为BCDMome,Active为true.

  放一个TquickRep控件在Form1上,DataSet为Tquery1.

  放一个TQRGroups控件在TquickRep上,这时默认为group header。(任何时候当group中断或更高级别的group中断,这个header都将打印出来,如果有表达式,根据表达式的值显示内容。)接着添加一个group footer band,添加时,放一个TQRBand控件在报表上,连接TQRGroups的FooterBand属性到这个QRBand,这时这个新建的TQRBand就成为Group Footer. (TQRGroup的一个重要特性是表达式,任何时候当表达式的值变时Group都将中断,如表达式是按省列出城市名,当前列出广东省,当属于该省的城市列完后,表达式值改变,这时Group中断,接着显示其他省的城市名。)TQRGroups的Expression属性设为Query1.State(根据不同的州来中断)。

  放一个TQRBand控件在报表上,BandType为rbDetail.

  放一个TQRExpr控件在group header上面,其Expression属性为:if(State<>’’,State,’Unknown state’),即如果公司的州没填,就归入Unknown state,否则归入State.

  放三个TQRDBText在Detail上,他们的DataSet都指向Query1,DataField分别指向Company,Contact,Phone.

  在放一个TQRExpr控件在group Footer上面,Expression为’Customers in’+State+’:’+Str(Count) 作用是在每个州的公司列完后显示该州总共有多少个公司。

  按右键选预览,应该看到不同的州名及其公司和公司公司总数。

  五、QuickReport 条件式列印

  可以直接在 TQuickReport 的 OnFilter 事件中写明条件判断,OnFilter事件的引数中有一个以 var 宣告的 PrintRecord 布林型态变数,将这个变数设为 True(预设值), 该笔记录便会印出;反之, 设为False,就不印出这笔记录.

procedure TForm1.QuickReport1Filter(var PrintRecord: Boolean);
begin
PrintRecord := False;
if YourTable.FieldByName('WantedField').AsInteger <= 100 then
Exit;
if YourTable.FieldByName('WantedField').AsInteger >= 150 then
Exit;
PrintRecord := True;

QuickReport基本知识(转)

2002-08-01· · ··C++ Builder 编程俱乐部  一、 简单了解各控件功能   以下是各控件最简单的使用功能,其他功能依具体的实现而介绍。  TquickRep:带有坐标,作为其他...
  • MyDream_yuyanqing
  • MyDream_yuyanqing
  • 2010年01月22日 09:51
  • 464

FastReport与QuickReport的优缺对比

FastReport(FR)与QuickReport(QR)的优缺对比从我FR与QR的使用感受来看,现在各自的主要优缺点例出,给朋友们参考:1>QR优点,FR的缺点A、很方便的制作中国式报表,即主数据...
  • baronyang
  • baronyang
  • 2006年04月05日 17:49
  • 2752

关于delphi里面使用QUICK REPORT 打印的种种问题

1.使用针式打印机连续打印,走纸的文件解决, 设计的时候:quick report选择cusomter paper,打印的时候,选择打印机纸张大小为实际一致的纸张,如果没有那么自定义纸张单位换算:  ...
  • liuhualiang
  • liuhualiang
  • 2004年08月02日 11:21
  • 2647

Delphi报表控件QuickReport VS FastReport对比

从Delphi中加入报表控件之后到最新的Delphi7之前,QuickReport一直是Delphi附带的报表控件,抛却商业的利益不谈,QuickReport能够长期占领Delphi的报表控件也在一定...
  • stefan520
  • stefan520
  • 2014年04月08日 09:52
  • 731

C++ builder XE8下安装QuickReport

我原来一直用的是C++Builder 6 ,因为只是写一些数据库应用,所以就没有换高版本的IDE,最近心血来潮,想升级一下自己的开发工具,于是乎下载安装了 RAD Studio XE8,由于不会用Fa...
  • red7799
  • red7799
  • 2016年02月29日 22:38
  • 593

QuickReport Delphi7完全解决方案

前言      本人很不喜欢QuickReport,因为其有太多问题,也太不灵活。但在开发过程中,还是无法避免接触到这种问题,特别是历史遗留下来的控件,几乎是不可能把那么多的报表去换成其他报表控件的。...
  • fbysss
  • fbysss
  • 2004年10月28日 16:34
  • 6677

深入QuickReport一

报表是数据库应用程序的基本组成部分之一,完整的数据库应用程序总要提供报表功能。与传统的数据库应用程序设计工具相比,C++ Builder中提供了QuickReport组件,使C++ Builder的数...
  • zang141588761
  • zang141588761
  • 2016年08月23日 10:26
  • 1053

delphi quickreport 打印时报 stackoverflow问题处理

问题截图如下: 经检查,发生这种情况的原因是: 1、代码中队quick report报表设置了以下的属性: fmKindProductCard.qrRepareSmallCard...
  • jzt_designer
  • jzt_designer
  • 2016年12月09日 17:58
  • 454

Delphi 7中添加Quick Report

Quick Report在Delphi 7工具条中找不到, 因为Delphi 7默认的报表工具为Rave,但Delphi 7中仍然存在Quick Report。可以使用Components|Insta...
  • rosefish
  • rosefish
  • 2004年10月04日 20:47
  • 795

Delphi QuickReport 分组— QRGroup

分组字段不能用中文 分组字段不能用中文 分组字段不能用中文
  • sunwayj
  • sunwayj
  • 2017年02月05日 16:55
  • 231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QuickReport基本知识
举报原因:
原因补充:

(最多只允许输入30个字)