一个报表(FASTREPORT)问题! 各位FASTREPORT高手来看看!有分哦! (50分)

  • 主题发起人 主题发起人 无忧鱼
  • 开始时间 开始时间

无忧鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
在FASTREPORT中,我放置了一个主项数据BAND与一个主项数据BAND FOOT,我的要求是,当主项
数据BAND上的内容打印不足一页时,主项数据BAND FOOT上的数据表格自动填充余下的空位,以
使整个表格看起来美观,而不是留下一个空位。我该如何做,各位高手帮忙,如果嫌分少可以再
加!
 
用子Band,DEMO里有你要的例子
 
对,看demo,demos/Reports例子中的"Print empty Grid"
 
认真仔细的看看他的属性。
 
手工设计fast reprot方法
报表窗口如下
frdbdataset1 fr数据源 dataset设置为要显示的数据集
frreport1 fr报表
报表的的设计如下
band1,报表标题
band2,主项数据无数据源 
band3,主项数据 数据源为frdbdataset1
band4,栏目脚,用于显示合计数据
band5,子栏  ,用于不足行时补写空白行

procedure TForm1.frReport1ManualBuild(Sender: TfrPage);
//在frreport1中的onmanualbuild事件中手工设置报表项
var
i, j,k: Integer;
begin

k:=trunc(frdbdataset1.DataSet.RecordCount/8);
            //每页显示8行(行数可用变量),计算页数
Sender.ShowBandByType(btReportTitle);
//显示报表标题
for i := 0 to kdo
//循环打印每页
begin
Sender.ShowBandByName('Band2');
       //显示列头 (band2是一个主项数据,无数据源)
for j := 1 to 8do
//循环打印每行
begin
if not frdbdataset1.Eof then
begin
Sender.ShowBandByName('Band3');
      //显示主项数据 (band3是主项数据,数据源为frdbdataset1)
frdbdataset1.Next;
//显示下一条数据
end
else
sender.ShowBandByName('band5');
//显示空白行 (band5为child band)
end ;
//在实际的页面设计当中此处有一个栏目脚band 以显示合计
if i <> k then
Sender.NewPage;
//产生新页面
end;
end;

我的一个例了
或者,用上面各位的方法,
用一个隐含的主项数据band写script
while freespace>20do
showband('band2')//bnad2 是显示空格的band
 
选主项数据BAND,按鼠标右键,选"自动追加空行"
 
分确实少了点。
先加入一个child,画出和masterdata 相同的空格
页面上加一个Mastfooter,高度设置为0,脚本里加入代码 while Freespace>=n(n为你的行的高度)do
showband(Child的name)
这就OK了!
 
多人接受答案了。
 

Similar threads

回复
0
查看
848
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部