FASTREPORT能不能做到这种效果?
即固定显示4行(或任意行的空格),而不是根据数据的多少而显示多少行,
我知道有一种叫显示子报表的可以把行数填满,
可是我这个软件不需要填满空白的纸,只需要打四行就够了,而且数据也不会超出四行的,最多就是四行,超出就要另开一张收据了。
请知道的朋友指点一下,谢谢。
[解决办法]
用Child补空行,不过要写点代码
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);var i: Integer;begin if (<Line>=MasterData1.DataSet.RecordCount) then begin if ((<Line> Mod 4)<>0) then begin for i:=1 to 4-(<Line> Mod 4) do Engine.ShowBand(Child1); end; end;end;procedure ColumnFooter1OnBeforePrint(Sender: TfrxComponent);var i: Integer;begin if MasterData1.DataSet.RecordCount=0 then for i:=1 to 4 do Engine.ShowBand(Child1);end;
[解决办法]
表格全画,不用Fastreport的数据集就可以完成。用数据就不知道如何完成了!
[解决办法]
如果只有4行的话,用这个简单的方法也可以的:
1\把报表设计好,不要放任何band,设置好左右纸张大小、边界等就可以了。
2\在打印时,把整理好的数据,用循环写入报表,再打印就可以了。
self.frxReport1.LoadFromFile('reports\收款收据.fr3');self.adoquery1.first;while not self.adoquery1.eof do beginif self.adoquery1.recno()=1 then beginTfrxMemoView(frxReport1.FindObject('Memo11')).Memo.Text:=self.adoquery1.fieldbyname('名称').asstring;TfrxMemoView(frxReport1.FindObject('Memo12')).Memo.Text:=self.adoquery1.fieldbyname('单位').asstring;......end;if self.adoquery1.recno()=2 then beginTfrxMemoView(frxReport1.FindObject('Memo21')).Memo.Text:=self.adoquery1.fieldbyname('名称').asstring;TfrxMemoView(frxReport1.FindObject('Memo22')).Memo.Text:=self.adoquery1.fieldbyname('单位').asstring;......end;........self.adoquery1.next;end;self.frxReport1.ShowReport;
[解决办法]
只要这个表格画上去
制定数据行数就可以了
不用这么复杂。
就是一个套打的问题吧