我在DELPHI版块RAVE报表上解决的问题较多,而且发现提出的问题都有很大的相似性(本来提交了几个FAQ,但不知何时才能通过审核),所以就先整理一下自己的一点经验,希望能带给大家一点帮助,如果你觉得没什么用大可不必看.:)
以下的程序在XP+D6+Rave5.1下调试通过,
问题1:动态的设置报表中的内容
uses
RVClass, RVProj, RVCsStd;
var
MyPage: TRavePage;
MyText: TRaveText;
begin
RaveProject1.Open;
With RaveProject1.ProjMan do begin
MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage; //查找PAGE
MyText := FindRaveComponent('Text1',MyPage) as TRaveText; //查找TEXT
MyText.Text := 'Boland Delphi'; //设置报表中文本内容
MyText.Color := clGreen; //设置颜色
end; { with }
RaveProject1.ExecuteReport('Report1');
RaveProject1.Close;
end;
问题2:保存报表为HTML或PDF格式(对于PDF格式不支持中文)
rvproject1.projectfile :='E:/delphi/rave/files/test.rav';
rvproject1.Open;
rvproject1.SelectReport('report1',true);//选择要打印的报表
RvSystem1.DoNativeOutput:=false;
RvSystem1.DefaultDest:= rdFile;//保存成文件
RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式 或RPRenderPDF1;
RvSystem1.OutputFileName:='files/test.html'; //存放的路径
RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];
try
rvproject1.Execute;
except
ShowMessage('生成报表文件错误!');
end;
对于只有一页报表那是没有问题的,但对于多页在D6下和D7有所不同.D6下可以生成许多页,但D7下却
不行,不知为什么?D6下的RAVE版本是5.1,
问题3: IntraWeb和Rave的无缝连接
我的思路就是先把报表保存成HTML或PDF格式,然后再用IE调用
const
AIPOptions: string = 'toolbar=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,location=no,directories=no,width=1000,height=700';
var
aipurl :string;
rvproject1.Open;
rvproject1.SelectReport('report1',true);//选择要打印的报表
RvSystem1.DoNativeOutput:=false;
RvSystem1.DefaultDest:= rdFile;//保存成文件
RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式
RvSystem1.OutputFileName:='files/test.html'; //存放的路径
RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];
try
rvproject1.Execute;//生成报表
AIPURL := WebApplication.URLBase + '/file