FastReport如實現打印固定行數,不足補打空白行(轉)


看了網上的一些資料,發現了方法,但是描述都不是很詳細,也至於每次都無法實現,只能在數據集中做補空行處理。今天終於弄通了,貼出方法,以備后續之用。

1. <1>在報表上加一個Child(在控件設計器中名稱叫“子(W)”).其Name取名叫BlankBand。

   <2>此Band就是我們要添加的空行(若你的報表明細中有表格線,明細Band(如  DetailData中也有表格線,請在添加的BlankBand中也照樣添加好表格線)。

          Band的高度設置為明細Band的高度。

  <3>.經過<2>的設置后,此Band的名稱在報表中顯示為: Child:BlankBand

 

2.在報表上加一個Footer 的Band(不是PageFooter)。(若你的報表不需要此Footer,可以將此BAND的高度弄成0).

  添加此Band的理由:需要利用此Footer的OnBeforePrint事件計算補空行。

 

3.在Footer的Band的OnBeforePrint事件中寫入動態添加空行的代碼:

 

procedure Footer1OnBeforePrint(Sender: TfrxComponent);
begin
 while (engine.freespace-8.7 >=0.6) and (engine.freespace<29.70) do   //lybingyu我試驗成功時沒有添加 and (engine.freespace<29.70)  條件
   engine.showband(blankband);

end;

 

 //說明:

// 1.  8.7高度為為報表中的PageFooter的高度,因為報表在打印Footer時,PageFooter還沒打印,所以,在計算時得讓工作引擎去掉預留的PageFooter的Band的高度.

//2.  0.6為空行Band的高度,即BlankBand的高度。

//3.  29.7為一張豎向A4張的默認高度。

    若不加此限制,有可能你的明細記錄在一張紙上打不下時跳到第二頁打,引擎因為只計算了PageFooter的高度,忽略了報表前面的Band高度會造成不停地插入空行以致報表的頁數會被不停地添加導致死循環。


---------------------
作者:chinmusam
來源:CSDN
原文:https://blog.csdn.net/chinmusam/article/details/6663524
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM