上面为界面设计,进行简单的布属
var
OLine:Integer;
OPage:Integer;
TPage:Array of Integer;
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
var
Old:Integer;
begin
//如果选择了每页重复打组头的话,必须加这一句。
if Oline=<Line> then Exit;
//则记录当前的组序号及当前页数
OLine:=<Line>;
Old:=<OPage>;
OPage:=<Page>;
if Engine.FinalPass then Exit;
//如果是第一遍,则用数组记录每个分组的总页数
if <Line>=1 then Exit;
Setlength(TPage,Length(TPage)+1);
TPage[Length(TPage)-1]:=OPage-Old;
end;
procedure Memo5OnBeforePrint(Sender: TfrxComponent);
VAR
Tal:Integer;
begin
if not Engine.FinalPass then Exit;
//为了处理最后一组。
if Length(TPage)<Oline then
Tal:=<TotalPages>-OPage+1
else
Tal:=TPage[Oline-1];
//如果一页允许多组时,可能会出现为0的情况。
if Tal=0 then Tal:=1;
TfrxMemoview(Sender).Text:=Format('组:%d/%d 总:%d/%d',[<Page>-OPage+1,Tal
,<Page>,<TotalPages>]);
end;
begin
Setlength(TPage,0);
end.
上面代码是直接在FastReport的代码中写的,调用的时候直接:
if frxReport1.PrepareReport() then
frxReport1.ShowPreparedReport;