翻譯|行業(yè)資訊|編輯:胡濤|2024-03-21 10:17:20.953|閱讀 115 次
概述:本文主要介紹在報(bào)表生成器FastReport .Net中,關(guān)于腳本的相關(guān)部分,歡迎查閱!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
FastReport的報(bào)表生成器(無(wú)論VCL平臺(tái)還是.NET平臺(tái)),跨平臺(tái)的多語(yǔ)言腳本引擎FastScript,桌面OLAP FastCube,如今都被世界各地的開(kāi)發(fā)者所認(rèn)可,這些名字被等價(jià)于“速度”、“可靠”和“品質(zhì)”,在美國(guó),歐洲和非洲不同國(guó)家均設(shè)有辦事處。FastReports網(wǎng)站有10種不同語(yǔ)言的介紹,F(xiàn)astReports報(bào)表?yè)碛?0種語(yǔ)言的本地化的信息。
FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC報(bào)表分析解決方案,使用FastReport .NET可以創(chuàng)建獨(dú)立于應(yīng)用程序的.NET報(bào)表,同時(shí)FastReport .Net支持中文、英語(yǔ)等14種語(yǔ)言,可以讓你的產(chǎn)品保證真正的國(guó)際性。 閱讀報(bào)表生成器FastReport .Net用戶指南:關(guān)于腳本(上)
除了報(bào)告中包含的對(duì)象外,腳本中還定義了兩個(gè)變量:報(bào)告和引擎。
報(bào)告變量指的是當(dāng)前的報(bào)告。在下面的列表中,列出了報(bào)告對(duì)象的方法:
Method | Description |
---|---|
object Calc(string expression) |
計(jì)算表達(dá)式并返回值。首次調(diào)用此方法時(shí),表達(dá)式將被編譯,這需要一些時(shí)間。 |
object GetColumnValue(string complexName) |
返回?cái)?shù)據(jù)列的值。列名必須以 "DataSource.Column "形式顯示。如果列的值為空,則默認(rèn)將其轉(zhuǎn)換為一個(gè)值(0、空字符串、false)。 |
object GetColumnValueNullable(string complexName) |
返回?cái)?shù)據(jù)列的值。與前一個(gè)方法相反,它不會(huì)轉(zhuǎn)換為默認(rèn)值,也可能為空。 |
Parameter GetParameter(string complexName) |
返回具有指定名稱的報(bào)告參數(shù)。在引用嵌套參數(shù)時(shí),名稱可以是復(fù)合的:"MainParam.NestedParam"。 |
object GetParameterValue(string complexName) | 返回具有指定名稱的報(bào)告參數(shù)的值。 |
void SetParameterValue(string complexName, object value) |
設(shè)置指定名稱的報(bào)告參數(shù)值。 |
object GetVariableValue(string complexName) |
返回系統(tǒng)變量的值,例如 "Date"。 |
object GetTotalValue(string name) |
按名稱返回 "Data"窗口中定義的總計(jì)值。 |
DataSourceBase GetDataSource(string alias) |
按名稱返回報(bào)表中定義的數(shù)據(jù)源。 |
引擎對(duì)象是一個(gè)控制報(bào)告創(chuàng)建的引擎。通過(guò)使用引擎的方法和屬性,可以管理在頁(yè)面上放置波段的過(guò)程。您可以使用引擎對(duì)象的以下屬性:
Property | Description |
---|---|
float CurX |
當(dāng)前 X 軸坐標(biāo)。可以為該屬性賦值,以便移動(dòng)打印對(duì)象。 |
float CurY |
當(dāng)前在 Y 軸上的打印位置。可以為該屬性賦值,以移動(dòng)打印對(duì)象。
|
int CurColumn |
多欄報(bào)表中當(dāng)前列的編號(hào)。第一列的編號(hào)為 0 |
int CurPage |
打印頁(yè)面的編號(hào)。該值可從系統(tǒng)變量 "Page "中獲取。 |
float PageWidth |
頁(yè)面寬度減去左右頁(yè)邊距。 |
float PageHeight |
頁(yè)面高度減去上下頁(yè)邊距。 |
float PageFooterHeight |
頁(yè)面頁(yè)腳(及其所有子帶)的高度 |
float ColumnFooterHeight |
欄腳(及其所有子帶)的高度。 |
float FreeSpace |
頁(yè)面可用空間的大小。 |
bool FirstPass | 如果正在執(zhí)行第一次(或唯一一次)報(bào)告?zhèn)鬟f,則返回 true。可通過(guò) Report.DoublePass 屬性獲取傳遞次數(shù)。 |
bool FinalPass |
如果正在執(zhí)行最后一次(或唯一一次)報(bào)告?zhèn)鬟f,則返回 true。 |
在下圖中,你可以看到上面列出的一些屬性的含義。
Engine.PageWidth 和 Engine.PageHeight 屬性決定打印區(qū)域的大小,幾乎總是小于頁(yè)面的實(shí)際大小。打印區(qū)域的大小由頁(yè)邊距決定,頁(yè)邊距由 LeftMargin、TopMargin、RightMargin 和 BottomMargin 頁(yè)面屬性給出。
Engine.FreeSpace 屬性決定頁(yè)面上可用空間的高度。如果頁(yè)面上有 ""Report footer" "帶,則在計(jì)算 FreeSpace 時(shí)會(huì)考慮其高度。請(qǐng)注意,打印頁(yè)邊框后,可用空間會(huì)減少。
如何形成準(zhǔn)備好的報(bào)告頁(yè)面?
FastReport 引擎在頁(yè)面上顯示條帶,直到有足夠的空間進(jìn)行條帶輸出。當(dāng)沒(méi)有可用空間時(shí),將打印 "報(bào)告頁(yè)腳 "條帶并形成新的空頁(yè)。顯示條帶從當(dāng)前位置開(kāi)始,當(dāng)前位置由 X 和 Y 坐標(biāo)決定。該位置由 Engine.CurX 和 Engine.CurY 屬性重新調(diào)整。打印帶狀圖后,CurY 會(huì)自動(dòng)按打印帶狀圖的高度增加。打印多欄報(bào)表時(shí),CurX 的位置會(huì)發(fā)生變化。
Engine.CurX 和 Engine.CurY 屬性不僅可用于讀取,也可用于寫(xiě)入。這意味著您可以通過(guò)使用一個(gè)合適的事件來(lái)手動(dòng)移動(dòng)條帶。使用這些屬性的示例請(qǐng)參見(jiàn) "示例 "部分。
引擎對(duì)象中定義了以下方法:
Method | Description |
---|---|
void AddOutline(string text) |
在報(bào)告大綱中添加元素(請(qǐng)參閱 "交互式報(bào)告 "章節(jié)),并將當(dāng)前位置設(shè)置為添加的元素。 |
void OutlineRoot() |
設(shè)置大綱根部的當(dāng)前位置。 |
void OutlineUp() |
將當(dāng)前位置移動(dòng)到更高層次的大綱元素上。 |
void AddBookmark(string name) |
添加書(shū)簽(請(qǐng)參閱 "交互式報(bào)告 "章節(jié)) |
int GetBookmarkPage(string name) |
返回書(shū)簽所在頁(yè)碼。 |
void StartNewPage() |
開(kāi)始一個(gè)新頁(yè)面。如果報(bào)表是多欄報(bào)表,則開(kāi)始新的一欄。 |
通過(guò)使用 AddOutline、OutlineRoot 和 OutlineUp 方法,可以手動(dòng)創(chuàng)建報(bào)告大綱。通常,這都是借助 OutlineExpression 屬性自動(dòng)完成的,每個(gè)波段和報(bào)表頁(yè)面都有 OutlineExpression 屬性。
AddOutline 方法為當(dāng)前大綱元素添加一個(gè)子元素,并使其成為當(dāng)前元素。當(dāng)前的報(bào)告頁(yè)面和頁(yè)面上的當(dāng)前位置都與新元素相關(guān)聯(lián)。如果多次調(diào)用 AddOutline 方法,就會(huì)產(chǎn)生如下結(jié)構(gòu):
Item1 Item2 Item3
為了控制當(dāng)前元素,有 OutlineUp 和 OutlineRoot 方法。第一個(gè)方法將指針移到位于更高層的元素上。因此,腳本:
Engine.AddOutline("Item1"); Engine.AddOutline("Item2"); Engine.AddOutline("Item3"); Engine.OutlineUp(); Engine.AddOutline("Item4");
將創(chuàng)建以下大綱:
Item1 Item2 Item3 Item4
OutlineRoot 方法會(huì)將當(dāng)前元素移動(dòng)到大綱的根部。例如,下面的腳本:
Engine.AddOutline("Item1"); Engine.AddOutline("Item2"); Engine.AddOutline("Item3"); Engine.OutlineRoot(); Engine.AddOutline("Item4");
將創(chuàng)建以下大綱:
Item1 Item2 Item3 Item4
要引用系統(tǒng)變量,請(qǐng)使用報(bào)告對(duì)象的 GetVariableValue 方法:
DateTime date = (DateTime)Report.GetVariableValue("Date");
在 "Data "窗口中可以看到系統(tǒng)變量列表。您可以將變量拖入腳本中,F(xiàn)astReport 會(huì)自動(dòng)創(chuàng)建用于引用變量的代碼。
要引用總值,請(qǐng)使用報(bào)告對(duì)象的 GetTotalValue 方法:
float sales = Report.GetTotalValue("TotalSales");
在 "Data "窗口中可以看到總數(shù)列表。從它,你可以拖動(dòng)到腳本,在此 FastReport 代碼自動(dòng)引用總。總計(jì)值具有 FastReport.Variant 類(lèi)型。It can be directly in any expression, because the FastReport.Variant type is automatically converted to any type.例如
float tax = Report.GetTotalValue("TotalSales") * 0.2f;
在處理過(guò)程中,可以參考總值。通常情況下,總值在打印帶子的那一刻就 "ready to use"。
要引用報(bào)告參數(shù),請(qǐng)使用報(bào)告對(duì)象的 GetParameterValue 方法:
int myParam = (int)Report.GetParameterValue("MyParameter");參數(shù)可以嵌套。在這種情況下,請(qǐng)標(biāo)出父參數(shù)的名稱,并在句號(hào)后標(biāo)出子參數(shù)的名稱:
Report.GetParameterValue("ParentParameter.ChildParameter")
參數(shù)有明確的數(shù)據(jù)類(lèi)型。它在參數(shù)的 DataType 屬性中給出。在引用參數(shù)時(shí)必須考慮到這一點(diǎn)。您可以在"Data"窗口中看到參數(shù)列表。您可以將參數(shù)拖入腳本,F(xiàn)astReport 會(huì)自動(dòng)創(chuàng)建用于引用參數(shù)的代碼。要更改參數(shù)值,請(qǐng)使用報(bào)告對(duì)象的 SetParameterValue 方法:
Report.SetParameterValue("MyParameter", 10);
本次關(guān)于 FastReport .Net 介紹就講解到這里了,點(diǎn)擊此處查看關(guān)于用戶指南的更多內(nèi)容。如果您想獲取更多產(chǎn)品試用/授權(quán)/價(jià)格信息,請(qǐng)點(diǎn)擊FastReport .Net了解,或者點(diǎn)擊咨詢。
FastReport技術(shù)QQ群:585577353 歡迎進(jìn)群一起討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn