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

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

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

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

          Band的高度設置爲明細Band的高度。blog

  <3>.通過<2>的設置後,此Band的名稱在報表中顯示爲: Child:BlankBand事件

 

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

  添加此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;di

 

 //說明:

// 1.  8.7高度爲爲報表中的PageFooter的高度,由於報表在打印Footer時,PageFooter還沒打印,因此,在計算時得讓工做引擎去掉預留的PageFooter的Band的高度.

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

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

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

相關文章
相關標籤/搜索