FastReport單元格合並


FastReport 自帶的單元格合並功能為“抑制重復值”,功能真的很弱,還不如不用。網上也有不少解決方案,不過用來用去,都不盡人意。

    下面是網上的兩個方案:

    1、報表腳本中寫代碼解決:單元格合並

    2、修改相關源代碼解決:單元格合並

    最初我是兩種方案結合使用,第1種方案的缺點是很明顯的,有時需要寫很多的代碼,一不小心容易出錯;第2種方案也存在問題,似乎只處理第一頁的的情況,當有多頁時,就亂套了。

    由於本人多個軟件都是使用fastreport報表控件,隨着時間推移,報表越來越多,設計報表也帶來了很大的工作量,實在維以忍受。年初開始研究了fastreport的相關源碼,目前終於制定了自己的解決方案。

    解決原理:

    1、建立自己的數據結構,用於保存所有單元格內容、高度、行號、列號;

    2、采用兩遍報表方式,第一遍記錄各個單元格內容及高度,在第二遍之前在自己的數據結構中計算哪些單元格需要合並及合並后各單元格的高度;

    3、在第二遍過程當中,設置相應的單元格的高度,合並的單元格第一個設置其高度為合並后的高度,被合並的其它單元格設置為不顯示;

對源碼修改的單元只有 frxClass.pas 與 frxEngine.pas 單元,修改的代碼不是很多,另外添加了一個自己的單元frxMergeCell.pas,用於建立自己的數據結構。

本報表單元格合並有兩種方案:

第1種:左邊的單元格為父單元格,只有父單元格相同時才合並;

第2種:與左邊的單元格無關,只要相同就合並。

有償提供相關源碼,如有需要,請聯系QQ:258322672,價格不會很高,主要修改這個東西確實花了點時間,若有購買,后期不管是否與本源碼相關的技術,只要知道的都會盡力提供。支持fastreport4.*系列,是否支持fastreport3.*系列未測試。

格式1報表:

格式2報表:


免責聲明!

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



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