翻譯|使用教程|編輯:楊鵬連|2021-04-25 09:41:50.940|閱讀 209 次
概述:FastReport引擎通常負(fù)責(zé)報表的構(gòu)建。有時有必要創(chuàng)建非標(biāo)準(zhǔn)格式的報告,而FastReport引擎無法生成該報告,但可以借助TfrxReport.OnManualBuild事件來手動構(gòu)建報告的功能。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
FastReport VCL是用于Delphi,C ++ Builder,RAD Studio和Lazarus的報告和文檔創(chuàng)建VCL庫。它提供了可視化模板設(shè)計器,可以訪問為30多種格式,并可以部署到云,網(wǎng)站,電子郵件和打印中。
近日,F(xiàn)astReport VCL更新至v6.9,在新版本中,在PDF更新中增加了對以下對象的并行表單支持:文本,替換和圖片。能夠通過InteractiveForms字體子集屬性將所需的字形僅包含在相互之間形式中。同時修復(fù)了多個Bug問題。歡迎下載體驗。(旁邊向下按鈕下載)
FastReport引擎通常負(fù)責(zé)報表的構(gòu)建。它以特定順序顯示報告的頻段,次數(shù)與報告所連接的數(shù)據(jù)源所需的次數(shù)相同,因此形成了完整的報告。有時有必要創(chuàng)建非標(biāo)準(zhǔn)格式的報告,而FastReport引擎無法生成該報告。在這種情況下,可以借助TfrxReport.OnManualBuild事件來手動構(gòu)建報告的功能。如果要定義此事件的處理程序,則FastReport引擎將管理發(fā)送給該事件。同時,以以下方式更改了形成報告的職責(zé)分配:
FastReport引擎:
處理程序:
OnManualBuild處理程序的本質(zhì)是發(fā)出有關(guān)將某些頻段呈現(xiàn)給FastReport引擎的命令。引擎本身將完成剩下的工作:只要當(dāng)前頁面中沒有位置,就會創(chuàng)建一個新頁面。腳本將被執(zhí)行。
引擎由TfrxCustomEngine類表示。此類的實例的鏈接位于該TfrxReport.Engine屬性中。
讓我們舉一個簡單的處理程序的例子。報告中有兩個“主數(shù)據(jù)”帶,它們未連接到數(shù)據(jù)。處理程序以隔行順序呈現(xiàn)這些頻段,每個頻段六次。在六個頻段之后,會出現(xiàn)一個很小的間隙。
Pascal:var i: Integer; Band1, Band2: TfrxMasterData; { find required bands } Band1 := frxReport1.FindObject('MasterData1') as TfrxMasterData; Band2 := frxReport1.FindObject('MasterData2') as TfrxMasterData; for i := 1 to 6 do begin { lead/deduce bands one after another } frxReport1.Engine.ShowBand(Band1); frxReport1.Engine.ShowBand(Band2); { make a small gap } if i = 3 then frxReport1.Engine.CurY := frxReport1.Engine.CurY + 10; end;C ++:
int i; TfrxMasterData * Band1; TfrxMasterData * Band2; // find required bands Band1 := dynamic_cast <TfrxMasterData *> (frxReport1->FindObject("MasterData1")); Band2 := dynamic_cast <TfrxMasterData *> (frxReport1->FindObject("MasterData2")); for(i = 1; i <= 6; i++) { // lead/deduce bands one after another frxReport1->Engine->ShowBand(Band1); frxReport1->Engine->ShowBand(Band2); // make a small gap if(i == 3) frxReport1->Engine->CurY += 10; }下一個示例顯示兩組bands并排放置。
var i, j: Integer; Band1, Band2: TfrxMasterData; SaveY: Extended; Band1 := frxReport1.FindObject('MasterData1') as TfrxMasterData; Band2 := frxReport1.FindObject('MasterData2') as TfrxMasterData; SaveY := frxReport1.Engine.CurY; for j := 1 to 2 do begin for i := 1 to 6 do begin frxReport1.Engine.ShowBand(Band1); frxReport1.Engine.ShowBand(Band2); if i = 3 then frxReport1.Engine.CurY := frxReport1.Engine.CurY + 10; end; frxReport1.Engine.CurY := SaveY; frxReport1.Engine.CurX := frxReport1.Engine.CurX + 200; end;C ++:
int i, j; TfrxMasterData * Band1; TfrxMasterData * Band2; Extended SaveY; Band1 = dynamic_cast <TfrxMasterData *> (frxReport1->FindObject("MasterData1")); Band2 = dynamic_cast <TfrxMasterData *> (frxReport1->FindObject("MasterData2")); SaveY = frxReport1->Engine->CurY; for(j = 1; j <= 2; j++) { for(i = 1; i <= 6; i++) { frxReport1->Engine->ShowBand(Band1); frxReport1->Engine->ShowBand(Band2); if(i == 3) frxReport1->Engine->CurY += 10; } frxReport1->Engine->CurY = SaveY; frxReport1->Engine->CurX += 200; }
如果您對FastReport感興趣,歡迎加入FastReport QQ交流群:801349317
還想要更多嗎?您可以點擊閱讀【FastReport報表2020最新資源盤點】,查找需要的教程資源。讓人興奮的是FastReport .NET正在慧都網(wǎng)火熱銷售中!>>查看價格詳情
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: