修改fastreport实现页尾补空白行或打印固定行数
2014-12-02 16:52
369 查看
刚刚实现成功,“页尾剩余补空白行”和“打印固定行数”两种模式
![](http://img.blog.csdn.net/20141202165351039?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmhjb25jaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20141202165409587?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmhjb25jaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20141202165457312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmhjb25jaA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
代码:
frxClass加:
//在DataBand末尾加空白行
//abcNone不启用,abcByRecordCount按记录数加,abcByFreeSpace按页面剩余空间加
TfrxAppendBlankCells = (abcNone, abcByRecordCount, abcByFreeSpace);
TfrxDataBand位置加:
published
//在DataBand末尾加空白行 --2014-12-1--
property AppendBlankCells: TfrxAppendBlankCells read FAppendBlankCells write FAppendBlankCells default abcNone;
public
BlankCells: Boolean;//此属性为true,块内文本框的不显示文字
改函数
procedure TfrxCustomMemoView.GetData;
.....
if IsDataField then
begin
//Band在BlankCells模式下不打印文字,这样就可能通过Band的RowCount指定固定的打印行数 --Conch 2014-12-1--
if (Parent is TfrxDataBand) and (TfrxDataBand(Parent).BlankCells) then
FMemo.Text := ''
else
if DataSet.IsBlobField(DataField) then
begin
.....
frxEngine加:
procedure ShowBandTree(Obj: TObject);函数加:
Label Loop_AppendBlank;
for i := 0 to Bands.Count - 1 do
begin
..........
ResetSuppressValues(b);
//在Band末尾追加空行,这样就可能通过Band的RowCount指定固定的打印行数 --2014-12-1--
b.BlankCells := false;
Loop_AppendBlank:
while not b.DataSet.Eof do
end;
//在DataBand末尾追加空行,这样就可能通过Band的RowCount指定固定的打印行数 --2014-12-1--
if (b.AppendBlankCells <> abcNone) and (not b.BlankCells)
and ( ((b.AppendBlankCells = abcByRecordCount) and (b.DataSet <> nil) and (b.RowCount > 0) and (b.FLineThrough <= b.RowCount))
or ((b.AppendBlankCells = abcByFreeSpace) and (b.Height <= FreeSpace))
)
then begin
b.Stretched := false;//禁止扩大高度
b.BlankCells := true;
if b.AppendBlankCells = abcByRecordCount then begin
//挂接成虚拟数据集
b.DataSet := b.VirtualDataSet;
b.VirtualDataSet.RangeEndCount := b.RowCount - b.FLineThrough + 1;
b.DataSet.Initialize;
goto Loop_AppendBlank;
end
else if b.AppendBlankCells = abcByFreeSpace then
//循环产生内容,直接剩余空间放不下
while b.Height <= FreeSpace do begin
CurLine := b.FLineN;
CurLineThrough := b.FLineThrough;
DoShow(b);
Inc(b.FLineN);
Inc(b.FLineThrough);
end;
end;
完工。
----作者:狂歌,Q63823961(无事勿扰,通常不作答),转载请注明出版--------
代码:
frxClass加:
//在DataBand末尾加空白行
//abcNone不启用,abcByRecordCount按记录数加,abcByFreeSpace按页面剩余空间加
TfrxAppendBlankCells = (abcNone, abcByRecordCount, abcByFreeSpace);
TfrxDataBand位置加:
published
//在DataBand末尾加空白行 --2014-12-1--
property AppendBlankCells: TfrxAppendBlankCells read FAppendBlankCells write FAppendBlankCells default abcNone;
public
BlankCells: Boolean;//此属性为true,块内文本框的不显示文字
改函数
procedure TfrxCustomMemoView.GetData;
.....
if IsDataField then
begin
//Band在BlankCells模式下不打印文字,这样就可能通过Band的RowCount指定固定的打印行数 --Conch 2014-12-1--
if (Parent is TfrxDataBand) and (TfrxDataBand(Parent).BlankCells) then
FMemo.Text := ''
else
if DataSet.IsBlobField(DataField) then
begin
.....
frxEngine加:
procedure ShowBandTree(Obj: TObject);函数加:
Label Loop_AppendBlank;
for i := 0 to Bands.Count - 1 do
begin
..........
ResetSuppressValues(b);
//在Band末尾追加空行,这样就可能通过Band的RowCount指定固定的打印行数 --2014-12-1--
b.BlankCells := false;
Loop_AppendBlank:
while not b.DataSet.Eof do
end;
//在DataBand末尾追加空行,这样就可能通过Band的RowCount指定固定的打印行数 --2014-12-1--
if (b.AppendBlankCells <> abcNone) and (not b.BlankCells)
and ( ((b.AppendBlankCells = abcByRecordCount) and (b.DataSet <> nil) and (b.RowCount > 0) and (b.FLineThrough <= b.RowCount))
or ((b.AppendBlankCells = abcByFreeSpace) and (b.Height <= FreeSpace))
)
then begin
b.Stretched := false;//禁止扩大高度
b.BlankCells := true;
if b.AppendBlankCells = abcByRecordCount then begin
//挂接成虚拟数据集
b.DataSet := b.VirtualDataSet;
b.VirtualDataSet.RangeEndCount := b.RowCount - b.FLineThrough + 1;
b.DataSet.Initialize;
goto Loop_AppendBlank;
end
else if b.AppendBlankCells = abcByFreeSpace then
//循环产生内容,直接剩余空间放不下
while b.Height <= FreeSpace do begin
CurLine := b.FLineN;
CurLineThrough := b.FLineThrough;
DoShow(b);
Inc(b.FLineN);
Inc(b.FLineThrough);
end;
end;
完工。
----作者:狂歌,Q63823961(无事勿扰,通常不作答),转载请注明出版--------
相关文章推荐
- XML Publisher中需要实现每页打印固定行数
- Oracle XML Publisher中需要实现每页打印固定行数
- CFormView实现了打印预览,但是打印室空白
- SAE设置记录:修改config.yaml实现地址重写和修改固定链接
- JS 实现在IE浏览器下的打印功能的去掉页眉页尾代码
- 实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入多少打印几乘几的乘法表
- 打印一首唐诗的N种实现之二:程序退出点修改
- c语言:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
- JS+CSS 实现打印分页 每页都有表头和页尾
- 使用jquery.jqprint.js 实现的打印功能,IE9不能进行打印预览、火狐打印空白界面
- 在fastreport中打印空白表格及小写金额转大写金额
- 使用Activex实现web固定格式尺寸单据打印、票据打印
- 实现自动增加时间、文件、行数打印
- FastReport.net每页打印固定行数
- FastReport分组打印并且指定每页行数(不足填空行)
- FastReport 中如何实现正反面打印
- 1、通过函数实现打印*号组成的直角三角形,函数要求传入行数即可。在main 方法中,通过用户输入得到行数,然后调用函数做打印。 三角形样式: * ** *** **** ***** ******
- 实现一个"可变二维数组",这个二维数组的行数要求用户从键盘输入,每行的元素个数仍由用户从键盘输入. //数组元素值用户可以自定义.最后把二维数组打印出来.不要忘记释放数组内存. /*void main
- 在报表中打印固定行(不足时补充空行)----使用fastreport 4.6 和 Delphi 7
- FastReport.net每页打印固定行数二