Delphi 7 中使用RAVE报表(四)
——利用程序设计一张报表 数据挖掘研究院
上一篇向大家介绍了建立一张简单报表的过程。这篇文章向大家介绍rave报表代码编程实例。窗体上放置组件:RvSystem, Button即可。
具体代码如下:
##################################################################################
unit Unit1; 数据挖掘研究院
interface 数据挖掘研究院
uses 数据挖掘实验室
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 数据挖掘实验室
Dialogs, StdCtrls, RpDefine, RpBase, RpSystem;
type
TForm1 = class(TForm)
RvSystem1: TRvSystem;
Button1: TButton;
procedure RvSystem1Print(Sender: TObject); 数据挖掘实验室
procedure Button1Click(Sender: TObject); 数据挖掘研究院
private
{ Private declarations } 数据挖掘实验室
public
{ Public declarations }
end; 数据挖掘研究院
var 数据挖掘研究院
Form1: TForm1;
implementation
{$R *.dfm} 数据挖掘研究院
procedure TForm1.RvSystem1Print(Sender: TObject);
var 数据挖掘研究院
I1: integer;
S1: string[20];
S2: string[20];
Bitmap: TBitmap;
PolyLineArr: array[1..6] of TPoint; 数据挖掘研究院
begin 数据挖掘研究院
with Sender as TBaseReport do begin 数据挖掘研究院
{ 打印表头和表尾 } 数据挖掘研究院
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("Amount 1"); 数据挖掘研究院
Tab(NA,-2,-2,-2,NA); 数据挖掘实验室
Println("Amount 2");
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); 数据挖掘研究院
for I1 := 1 to 10 do begin
Str(I1 * 1.23:2:2,S1);
Str(I1 * 98.76:2:2,S2);
Print(#9"LastName" + IntToStr(I1) + ", "); 数据挖掘研究院
SetFont("Times New Roman",8); 数据挖掘研究院
Print("FirstName M.");
SetFont("Times New Roman",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); 数据挖掘研究院
for I1 := 11 to 20 do begin
If Odd(I1) then begin
TabShade := 0;
end else begin 数据挖掘实验室
TabShade := 15;
end; { else }
Str(I1 * 1.23:2:2,S1);
Str(I1 * 98.76:2:2,S2);
Print(#9"LastName" + IntToStr(I1) + ", ");
SetFont("Times New Roman",8); 数据挖掘研究院
Print("FirstName M."); 数据挖掘实验室
SetFont("Times New Roman",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; { Set top of page to current YPos }
Bold := false; 数据挖掘研究院
Underline := false;
Italic := false;
Home; { Goto home position } 数据挖掘研究院
SetColumns(4,0.5); { Create 4 columns with 0.5" between each }
while ColumnLinesLeft > 0 do begin
Println(IntToStr(LinesLeft) + "/" + IntToStr(ColumnLinesLeft) + "/" +
IntToStr(LineNum) + "/" + IntToStr(ColumnNum)); 数据挖掘研究院
end; { while }
{ 具有边框的分栏报表 } 数据挖掘研究院
ClearTabs; 数据挖掘研究院
SetTopOfPage; 数据挖掘实验室
SectionBottom := 10.5; 数据挖掘研究院
Home;
SetFont("Times New Roman",12); 数据挖掘研究院
Bold := true; 数据挖掘实验室
Italic := true;
Print("Boxed Columns"); 数据挖掘研究院
SetTopOfPage; { Set top of page to current YPos } 数据挖掘研究院
Bold := false;
Italic := false; 数据挖掘研究院
Home; { Goto home position }
ClearTabs; 数据挖掘研究院
SetPen(clBlack,psSolid,1,pmCopy);
SetTab(0.5,pjCenter,0.375,0,BOXLINEALL,0);
SetTab(NA,pjCenter,0.375,0,BOXLINEALL,0);
SetTab(NA,pjCenter,0.375,0,BOXLINEALL,0); 数据挖掘研究院
SetTab(NA,pjCenter,0.375,0,BOXLINEALL,0);
SetColumns(4,0.5); { Create 4 columns with 0.5" between each }
while ColumnLinesLeft > 0 do begin 数据挖掘研究院
if LineNum = 1 then begin 数据挖掘实验室
TabShade := 15;
Println(#9"LL"#9"CLL"#9"L#"#9"C#"); { 打印标题栏 } 数据挖掘研究院
end else begin
TabShade := 0; 数据挖掘研究院
Println(#9 + IntToStr(LinesLeft) + #9 + IntToStr(ColumnLinesLeft) +
#9 + IntToStr(LineNum) + #9 + IntToStr(ColumnNum));
end; { else } 数据挖掘研究院
end; { while }
SetColumns(1,0); 数据挖掘研究院
{ 在指定位置绘出文本 } 数据挖掘研究院
NewPage;
OriginX := 0.0; { Set origin to normal }
OriginY := 0.0; 数据挖掘研究院
GotoXY(1.0,1.5);
Print("Text @ 1.0,1.5"); 数据挖掘研究院
GotoXY(6.0,1.5); 数据挖掘研究院
Println("Text @ 6.0,1.5"); 数据挖掘研究院
GotoXY(2.0,2.0);
Println("Text @ 2.0,2.0");
GotoXY(3.0,2.5); 数据挖掘研究院
Println("Text @ 3.0,2.5");
{*** 图形 图片***}
NewPage;
ResetSection;
SetFont("Arial",24);
Underline := true;
Home; 数据挖掘研究院
PrintCenter("Graphics Page Demo",PageWidth / 2);
SetFont("Times New Roman",8);
SectionBottom := 10.75; { Temporarily move the section bottom down } 数据挖掘研究院
PrintFooter("Page " + IntToStr(CurrentPage),pjLeft);
PrintFooter("Date 01/20/95",pjRight); 数据挖掘研究院
SectionBottom := 10.5; { Reset section bottom }
OriginX := 0.0; 数据挖掘研究院
OriginY := 0.5;
SetFont("Arial",10); 数据挖掘研究院
{ 半圆 弧线} 数据挖掘研究院
SetPen(clBlack,psSolid,-2,pmCopy); { Set pen to black 2/100ths" wide } 数据挖掘研究院
YPos := 0.95;
PrintCenter("Arc() and Chord()",2.125); 数据挖掘研究院
Arc(1.125,1.0,3.125,3.0,3.125,2.0,0.0,0.0); 数据挖掘研究院
SetBrush(clBlack,bsClear,nil);
Chord(1.125,1.0,3.125,3.0,0.0,0.8,3.125,2.25); 数据挖掘研究院
{ 饼图 } 数据挖掘实验室
YPos := 0.95; 数据挖掘研究院
PrintCenter("Pie()",4.25);
SetPen(clBlack,psSolid,-2,pmCopy); { Set pen to black 2/100ths" wide } 数据挖掘实验室
SetBrush(clBlack,bsHorizontal,nil);
Pie(3.25,1.0,5.25,3.0,5.25,2.0,0.0,0.0);
SetBrush(clBlack,bsVertical,nil); 数据挖掘研究院
Pie(3.25,1.0,5.25,3.0,0.0,0.0,3.25,7.0); 数据挖掘研究院
SetBrush(clBlack,bsBDiagonal,nil); 数据挖掘研究院
Pie(3.25,1.0,5.25,3.0,3.25,7.0,5.25,2.0); 数据挖掘研究院
{ Bitmap 图片} 数据挖掘研究院
YPos := 3.4; 数据挖掘研究院
PrintCenter("PaintBitmapRect()",6.375); 数据挖掘研究院
Bitmap := TBitmap.Create; 数据挖掘研究院
Bitmap.LoadFromFile("RPDEMO.BMP");
PrintBitmapRect(5.375,3.5,7.375,5.5,Bitmap); 数据挖掘研究院
Bitmap.Free; 数据挖掘研究院
end; 数据挖掘研究院
end;
procedure TForm1.Button1Click(Sender: TObject); 数据挖掘研究院
begin
RvSystem1.Execute; //执行报表!
end;
end. 数据挖掘研究院
##################################################################################
(ps:转载请注明作者--高速公路上的鱼(cyq))

