delphi Rave报表.docx
- 文档编号:24369475
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:30
- 大小:193.01KB
delphi Rave报表.docx
《delphi Rave报表.docx》由会员分享,可在线阅读,更多相关《delphi Rave报表.docx(30页珍藏版)》请在冰豆网上搜索。
delphiRave报表
打开Delphi,可以控件面板看到如图:
Delphi7下的Rave
打开Tools中的Rave,看到的报表设计界面如图:
Rave5的报表设计界面
一、Rave5的报表设计界面
首先,介绍一下Rave的报表设计器的各组件和相关的属性。
RaveDesigner集成开发环境的界面包括标题栏、菜单栏、快捷工具栏、组件栏和一些窗口:
·标题栏显示了当前的工程名,位于最上部。
·菜单栏,一些功能可通过菜单栏的菜单命令实现。
·快捷工具栏为位图按钮,一些常用的菜单命令用这些按钮实现。
·报表组件栏分页显示各种组件(Standard、Report、Zoom、Colors、Lines、Fills、Fonts、Drawing、BarCode、Alignment),在利用Rave开发应用程序的过程中,正确、合理地使用组件非常重要。
用它可设计基于数据库和文本的复杂报表。
·左边半部分像Delphi的objectinspector工具,可设置报表元件的属性,它的下部分有对应属性的简短提示。
·正中部分为设计区域,开发者可在上面添加各种设计元件,如Drawing的横线、直线、矩形、椭圆,Barcode中各种常用的条码,Standand中的Text、Memo、Section、Bitmap、Metafile等等。
·右边为设计导航区,可查看报表的各元件的更多信息,如报表库和数据显示目录,设计时也可快速定位元件位置。
二、Rave的报表设计器,组件栏的各组件:
1、Drawing(绘图)组件页:
Linecomponent:
画线组件,所画的线较灵活。
可以看到其属性入图,有颜色、线宽、线行等属性,设计者根据需要更改属性。
改变线的长短位置,选中线条后,选择一个端点则光标会变为十子型,拖动即可。
Hlinecomponent:
画水平线组件。
Vlinecomponent:
画垂直线组件。
Rectanglecomponent:
画长方形组件,可以使用fill组件填充。
Squarecomponent:
画正方形组件,可以使用fill组件填充。
Ellipsecomponent:
画椭圆组件,可以使用fill组件填充。
Circlecomponent:
画圆形组件,可以使用fill组件填充。
2、BarCode(条形码)组件页:
PostNetBarCode:
打印邮件标签上包括POSTNET条码。
I2of5BarCode:
打印Interleaved2of5条码。
Code39BarCode:
打印standardandextendedCode39条码。
Code128BarCode:
打印A,BandCCode128条码。
UPCBarCode:
打印UPC-12条码。
EANBarCode:
打印EAN-13条码。
3、Standard(标准)组件页:
Text:
这个组件是在报表上固定的文字,例如报表的标题等,可以设置字体的大小、颜色,Rotation属性可以使要显示的字为任意角度。
Memo:
Memo组件提供了多行文本的文字,与delphi中的相似,属性很多,但我们应用的不多,可以使用text属性添加文本。
Section:
这个组件是其他组件的容器,将其他组件固定在此组件中。
Bitmap:
这个组件是在报表中放置bmp文件(*.bmp),FileLink属性连接bmp文件。
MetaFile:
这个组件在报表中放置meta文件(*.wmf),FileLink属性连接meta文件。
FontMaster:
这个组件控制报表中的任何的text字的属性。
在要使用该字体的text组件或memo组件的fontmirrot属性选择FontMaster。
PageNumInit:
报表显示页码的初始页码。
如图的InitValue的值为5,则报表的初始页为5,页码从5开始。
4、Report(报表)组件页:
如果报表需要的是数据库的数据,则这个组件页中的组件使用比较频繁。
DataText:
用来显示数据库中内容比较短的信息,要用它显示相应的数据库字段信息,则要使用到DataField和DataView两个属性,用来连接数据库和字段。
DataText用来设计主从报表时,LookupDataView是相应的数据连接、LookupDisplay是显示内容、LookupField是主报表相应的数字段进行关联的字段的内容,也就是主数据字段进行连接的字段。
LookupInvalid是控制相应错误产生后的情况。
DataMemo:
在Memo的基础上支持了数据库的字段显示,使用DataField和DataView两个属性,用来连接数据库和字段。
除了输出相应的文本内容外,还可以输出RTF格式,显示RTF格式,需要设置ContainsRTF属性为True。
CalcTex:
这个组件用来统计报表字段的最大值、最小值、总和、统计值等内容直接使用,只需要通过CalcType属性来设置,CalcType属性包括了ctAverage(求平均值)、CtCount(求个数)、ctMax(求最大值)、ctMin(求最小值)、ctSum(求累加和)。
DataMirror Section:
和Section组件相似。
Region:
如果要进行报表的打印,Region组件规定了打印区域,可以设置Columns来分栏。
Band:
这个组件算是一个容器组件,包括text、Memo组件等,包括的是非数据库库信息,Band组件要放置在Region中,选择BandStyle属性后,出现如下图的属性对话框。
左边为报表中Band的列表,右面的PrintLocation包括:
BodyHeader(页眉)、GroupHeader(组眉)、RowHeader(行眉)、Detail(表体)、RowFooter(行脚)、GroupFooter(组脚)和BodyFooter(页脚),BandStyle属性可以多选。
PrintOccurrence属性包括:
First(首页打印)、NewPage(打印新一页)、NewColumn(新分栏)。
选择First(首页打印)也就是Band包括的内容只在第一页打印,选择NewPage(打印新一页),Band包括的内容必须在新的一页打印,选择NewColumn(新分栏),Band包括的内容必须在新的分栏中打印。
DesignerHide属性:
当一个报表有多个Band时,选择查找Band变得比较麻烦,设置DesignerHide属性为True时,没有选择到的Band内容被隐藏。
GroupDataView和GroupKey属性:
如果想要以相应的数据结果作为报表分组的依据,那么就必须设置这两个属性,GroupDataView是相应的数据源,GroupKey是数据源的索引,分组是靠GroupKey中的值进行分组的。
DataBand:
是直接作用于数据库,且可以在其中摆放相应数据库报表组件,这样通过它就可以让相应的报表具有数据库书库打印功能。
其中DataView属性是设置相应的数据源,GroupDataView是相应的报表中的分组数据源。
DataCycle:
与DataBand相似的地方在于循环的显示数据,DataBand是数据库内容的循环打印,而DataCycle不需要使用Region,它打印的区域为页面,每页只能打印一个组件设计好的内容。
使用DataBand是根据Region的范围来分页,而DataCycle则是每一页只现实一条信息根据数据的多少分页。
CalcOp:
该组件提供了报表相应的计算功能,具体的使用会在以后讲解。
CalcTotal:
与CalcOp结合使用来完成日常报表的统计功能。
5、Zoom(缩放)组件:
在设计报表时,放大、缩小报表页面。
6、Colors(颜色)组件:
对选择的对象快速的设置颜色。
7、Lines(线型)组件:
对于选择的线,更改其线型。
8、Fills(填充)组件:
对于正方形等图形填充样式。
9、Fonts(字体)组件:
进行字体的设置。
10、Alignment(队列)组件:
调整对齐组件和组建的层次。
下面介绍Delphi7下的Rave组件。
打开Delphi7,看到的rave页如下:
Delphi7下的Rave
包括有RvProject、RvSystem、RvNDRWriter、RvCustomConnection、RvDataSetConnection、RvTableConnection、RvQueryConnection、RvRenderPreview、RvRenderPrinter、RvRenderPDF、RvRenderHTML、RvRenderRTF、RvRenderText这几个组件。
一、RvProject组件
在使用rave报表中,这个组件是最为重要的一个,是使用频率最高的一个组件,开发人员可以通过这个报表完成报表的打印、文件的生成、输出,土过此事可以使用设计状态,也可以通过它来点用相应的报表设计器。
1、属性:
DLLFile:
发行报表时需要的dll文件,在5.0以后用户不需要单独发行相应的动态链库文件了。
Engine:
指定相应报表生成的目的地,一般的情况下,是RvSystem,也就是说它可以打印、打印预览、生成打印文件。
当然也可以选择RvNDRWriter组件,那么报表输出的结果是RTF、HTML、PDF、TXT其中的一种。
LoadDesigner:
允许用户调用报表设计器,如果它的值为true,那么最终用户就可以调用报表设计器;如果它的值为False,那么最终用户就没有权力调用报表设计器。
ProjectFile:
相应报表项目文件,指定详细目录路径。
StoreRAV:
要将报表文件嵌入到exe文件中,在这里就要填入相应的报表项目文件。
2、主要方法:
(1)SelectReport方法:
FunctionSelectReport(ReportName:
String;FullName:
Boolean):
Boolean;
ReportName是相应的报表名称,FullName则表示是否以报表的全程作为报表的名称。
(2)Execute方法:
打印选择的相应报表文件,报表时被SelectReport选择的。
RvProject1.Execute;
(3)ExecuteReport方法:
RvProject1.ExecuteReport(ReportName:
String);
ReportName是相应的报表的名称。
(4)Open方法:
RvProject1.Open;打开相应的报表以共操作。
(5)Close方法:
RvProject1.Close;关闭一个报表的操作。
二、RvSystem组件
打印或者预览报表时,进行打印参数设置的。
使用时与RvProject结合。
1、属性:
DefaultDest:
指定打印的方式。
rdPreview:
预览;
rdFile:
文件;
rdPrinter:
打印机。
RulerType:
相应的标尺单位。
rtNone:
没有标尺;
rtHorizCm:
横向标尺,单位为厘米;
rtVertCm:
纵向标尺,单位为厘米;
rtBothCm:
先是所有的标尺,单位为厘米;
rtHorizIn:
横向标尺,单位为英寸;
rtVertIn:
纵向标尺,单位为英寸;
rtBothIn:
所有标尺,单位为英寸;
SystemFiler:
报表打印文件参数的设置。
如果DefaultDest属性为rbFile,则需要设置这里的属性值。
SystemOptions:
所有报表输出设置属性。
SystemPreview:
报表预览参数的设置。
如果DefaultDest属性为rdPreview,则需要设置这里的属性值。
SystemPrinter:
报表打印参数的设置。
如果DefaultDest属性为rdPrinter,则需要设置这里的属性值。
SystemSetup:
是对是否允许打印,是否允许打印机设置等参数的设置。
TitlePreview:
更改报表预览的窗体的名称,例如可以将ReportPreview改为报表预览。
TitleSetup:
更改报表输出窗体的名称,例如可以将OutputOptions改为输出设置。
TitleStatus:
报表状态窗体名称,例如可以将ReportStatus改为报表状态。
2、主要方法:
OverridePreview方法,OverrideSetup方法,OverrideStatus方法:
这三个方法可以对报表设置、打印设置、报表预览窗体进行覆盖,在后面会介绍如何通过这几个方法是窗体为中文。
三、NDRWriter组件
使用该组件实现自定义报表预览。
四、RvDataSetConnection组件,RvTableConnection组件,RvQueryConnection组件
使用这三个组件实现数据库的连接。
五、RvRenderPDF组件,RvRenderHTML组件,RvRenderRTF组件,RvRenderText组件
报表生成相应文件的组件,可让报表生成相应的pdf、html、rtf、text文件。
但生成文件对中文不支持,会出现乱码。
下面介绍如何建立报表。
一、建立一张简单的报表
言归正传,我们开始建立一张简单的报表,打开Delphi7,新建一个工程,打开Tools下的RaveDesigner,在Rave设计器的page1中,拖放Text,我们在text属性中写入文字内容,例如,“我的第一张报表”,通过Font属性更改字体和字的大小,颜色等。
拖放Memo组件,在text属性中输入文字可以看到一个多行的文本。
拖放Bitmap组件,在FileLink属性中选取插入图片的位置,就可以看到在报表中显示了一张图片。
点击[ExecuteReport]或者F9,则查看到运行后报表。
接下来,对在可视环境中设计好的报表保存,可视化的报表就保存为*.rav文件。
那么在delphi程序中如何调用呢?
在delphi中拖放RvProject、RvSystem组件,并且把RvProject的Engine属性连接为RvSystem1。
RvProject1的ProjectFile属性,选择为我们刚才保存的.rav文件。
再在form1上放置一个Button,添加click事件,代码如下:
procedureTForm1.Button1Click(Sender:
TObject);
begin
RvProject1.Execute;//或者RvProject1.ExecuteReport('Report1');
end;
运行程序,点击按钮,就可以看到我们想要的报表了,您可能注意到,打印设置,报表预览的窗体都是英文的,如何使它显示中文我们在以后会介绍,不过我们刚才在窗体中放入了RvSystem组件,有TitlePreview、TitleSetup、TitleStatus三个属性,更改后可以看到我们窗体的标题栏显示的是您所希望显示的中文标题。
RvSystem组件有很多我们需要的属性,将SystemPrinter的Orientation属性设置为poLandScape,则报表显示为横向的。
将SystemPreview的FormStatus属性设置为wsMaximized则报表预览的窗体最大化显示。
好了,这样我们就完成了一张简单的报表。
二、利用程序设计一张报表
上面向大家介绍了建立一张简单报表的过程,下面向大家介绍rave报表代码编程实例。
窗体上放置组件:
RvSystem,Button即可。
具体代码如下:
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls,RpDefine,RpBase,RpSystem;
type
TForm1=class(TForm)
RvSystem1:
TRvSystem;
Button1:
TButton;
procedureRvSystem1Print(Sender:
TObject);
procedureButton1Click(Sender:
TObject);
private
{Privatedeclarations}
public
{Publicdeclarations}
end;
var
Form1:
TForm1;
implementation
{$R*.dfm}
procedureTForm1.RvSystem1Print(Sender:
TObject);
var
I1:
integer;
S1:
string[20];
S2:
string[20];
Bitmap:
TBitmap;
PolyLineArr:
array[1..6]ofTPoint;
begin
withSenderasTBaseReportdobegin
{打印表头和表尾}
SectionTop:
=0.75; //顶端
SetFont('黑体',26); //设置字体
Underline:
=true; //下划线
Home;
YPos:
=1.0;
FontRotation:
=20;//旋转角度
PrintCenter('我的报表',PageWidth/2);
SetFont('宋体',10);
SectionBottom:
=10.75;
PrintFooter(' 第'+IntToStr(CurrentPage)+'页',pjLeft); //页码
PrintFooter('日期:
'+DateToStr(Date)+'',pjRight); //日期
SectionBottom:
=10.5;
YPos:
=1.5;
SetFont('宋体',12);
SetTopOfPage;
Home;
{打印列标题}
ClearTabs;
SetPen(clBlack,psSolid,1,pmCopy);{设置画笔为一个点宽}
SetTab(0.5,pjCenter,3.5,0,BOXLINEALL,0);
SetTab(NA,pjCenter,1.0,0,BOXLINEALL,0);
SetTab(NA,pjCenter,1.5,0,BOXLINEALL,0);
SetTab(NA,pjCenter,1.5,0,BOXLINEALL,0);
Bold:
=true;
Tab(-2,NA,-2,-2,NA);{画出具有粗边框的表格}
Print('Name');
Tab(NA,NA,-2,-2,NA);
Print('Number');
Tab(NA,NA,-2,-2,NA);
Print('Amount1');
Tab(NA,-2,-2,-2,NA);
Println('Amount2');
Bold:
=false;
{打印具有边框的数据}
ClearTabs;
SetTab(0.5,pjLeft,3.5,2,BOXLINEALL,0);
SetTab(NA,pjCenter,1.0,2,BOXLINEALL,0);
SetTab(NA,pjRight,1.5,2,BOXLINEALL,10);
SetTab(NA,pjRight,1.5,2,BOXLINEALL,0);
forI1:
=1to10dobegin
Str(I1*1.23:
2:
2,S1);
Str(I1*98.76:
2:
2,S2);
Print(#9'LastName'+IntToStr(I1)+',');
SetFont('TimesNewRoman',8);
Print('FirstNameM.');
SetFont('TimesNewRoman',12);
Println(#9+IntToStr(I1)+#9'$'+S1+#9'$'+S2);
end;{for}
{打印具有阴影的数据}
ClearTabs;
SetTab(0.5,pjLeft,3.5,2,BOXLINENONE,0);
SetTab(NA,pjCenter,1.0,2,BOXLINENONE,0);
SetTab(NA,pjRight,1.5,2,BOXLINENONE,0);
SetTab(NA,pjRight,1.5,2,BOXLINENONE,0);
forI1:
=11to20dobegin
IfOdd(I1)thenbegin
TabShade:
=0;
endelsebegin
TabShade:
=15;
end;{else}
Str(I1*1.23:
2:
2,S1);
Str(I1*98.76:
2:
2,S2);
Print(#9'LastName'+IntToStr(I1)+',');
SetFont('TimesNewRoman',8);
Print('FirstNameM.');
SetFont('TimesNewRoman',12);
Println(#9+IntToStr(I1)+#9'$'+S1+#9'$'+S2);
end;{for}
ClearTabs;
{分栏报表}
ClearTabs;
SetTopOfPage;
SectionBottom:
=8.0;
Home;
SetFont('宋体',12);
Bold:
=true;
Underline:
=true;
Print('分栏报表(LinesLeft/ColumnLinesLeft/LineNum/ColumnNum)');
SetTopOfPage;{SettopofpagetocurrentYPos}
Bold:
=false;
Underline:
=false;
Italic:
=false;
Home;{Gotohomeposition}
SetColumns(4,0.5);{Create4columnswith0.5"betweeneach}
whileColumnLinesLeft>0dobegin
Println(IntToStr(LinesLeft)+'/'+IntToStr(ColumnLinesLeft)+'/'+
IntToStr(LineNum)+'/'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- delphi Rave报表 Rave 报表