示例 4.帶目錄、導(dǎo)航和大綱的報(bào)告
在本例中,我們將創(chuàng)建一份具有以下功能的報(bào)告:
- 在第一頁(yè)打印 "Table of Contents"(TOC),它是交互式的,即您可以單擊其中的元素導(dǎo)航到相應(yīng)的頁(yè)面;
- 在預(yù)覽窗口中顯示大綱,大綱也是交互式的。

報(bào)告將使用"Categories"和 "Products" 表。在 TOC 中,我們將打印類(lèi)別列表。報(bào)告的其余部分將打印產(chǎn)品分類(lèi)列表。報(bào)告模板將由兩頁(yè)組成:第一頁(yè)用于打印 TOC;第二頁(yè)是報(bào)告的主要部分。
我們將首先討論 TOC。創(chuàng)建新報(bào)告并添加 "Categories"和 "Products" 數(shù)據(jù)源。將 "Data "帶連接到 "Categories"表,并按以下方式放置對(duì)象:

為了使 TOC 對(duì)象具有交互性,請(qǐng)配置其 "Hyperlink "屬性:

將類(lèi)別名稱(chēng)作為書(shū)簽。我們稍后將定義對(duì)象的書(shū)簽。
要在 TOC 中打印頁(yè)碼,需要執(zhí)行以下操作:
啟用報(bào)告的 "double pass "設(shè)置。這可以在 "Report|Options..."菜單中完成。需要這樣做是因?yàn)?TOC 頁(yè)面會(huì)在其他頁(yè)面之前打印。此時(shí),F(xiàn)astReport 不知道類(lèi)別將在何處打印;
使用 "Engine.GetBookmarkPage "函數(shù),該函數(shù)返回指定書(shū)簽的頁(yè)碼。在本例中,我們使用"[Categories.CategoryName]"表達(dá)式作為書(shū)簽名稱(chēng),因此函數(shù)調(diào)用如下:
在報(bào)告的第二頁(yè),我們將創(chuàng)建一個(gè)主從報(bào)告,如下圖所示:[Engine.GetBookmarkPage([Categories.CategoryName])]

設(shè)置我們?cè)?TOC 中點(diǎn)擊元素時(shí)導(dǎo)航到的書(shū)簽。為此,請(qǐng)選擇第一個(gè) "Data "帶,并在其 "Bookmark "屬性中注明以下表達(dá)式:
要設(shè)置報(bào)告大綱,請(qǐng)執(zhí)行以下操作:[Categories.CategoryName]
- 選擇第一個(gè)報(bào)告頁(yè)面。這可以通過(guò)切換到該頁(yè)面來(lái)完成;
- 在 "Properties "窗口中,為 "OutlineExpression "屬性設(shè)置以下值:
"Contents"
- 切換到第二個(gè)報(bào)告頁(yè)面;
- 選擇第一個(gè) "數(shù)據(jù) "帶,并設(shè)置其 "OutlineExpression "屬性:
選擇第二個(gè) "Data "并設(shè)置其 "OutlineExpression "屬性:[Categories.CategoryName]
[Products.ProductName]