• <menu id="w2i4a"></menu>
  • logo FastReport.Net 教程2017(完結(jié))

    文檔首頁(yè)>>FastReport.Net 教程2017(完結(jié))>>如何實(shí)現(xiàn)報(bào)表中高亮顯示文本功能

    如何實(shí)現(xiàn)報(bào)表中高亮顯示文本功能


    在瀏覽電子報(bào)表時(shí),你常常會(huì)想要高亮顯示一些文本,就像你在閱讀紙質(zhì)文檔時(shí)用熒光筆勾畫重點(diǎn)那樣。我要告訴你,這是可以實(shí)現(xiàn)的。

    在報(bào)表預(yù)覽模式下,你可以通過(guò)單擊鼠標(biāo)來(lái)選擇所需的文本字段。也就是說(shuō),你單擊文本框,它就會(huì)改變顏色。如果再次按下,突出顯示效果消失。我會(huì)告訴你兩種方法來(lái)做到這一點(diǎn),他們都涉及使用報(bào)表腳本。

    方法1:該方法的本質(zhì)是使用一個(gè)Sender(即引發(fā)事件的對(duì)象)來(lái)分配一個(gè)新的顏色給OnCklick事件處理句柄。在這種情況下,你需要更新緩存中的報(bào)表頁(yè)面,因?yàn)?nbsp;因?yàn)轭A(yù)覽模式會(huì)顯示其報(bào)表。

    那么,讓我們用產(chǎn)品清單創(chuàng)建一個(gè)最簡(jiǎn)單的報(bào)表:

    如何實(shí)現(xiàn)報(bào)表中高亮顯示文本功能

    假設(shè)我們想通過(guò)點(diǎn)擊來(lái)突出顯示其中的一個(gè)字段。而當(dāng)我們?cè)俅吸c(diǎn)擊時(shí),我們想刪除高亮顯示。為文本對(duì)象創(chuàng)建事件“點(diǎn)擊”,以顯示Products.ProductName字段。

    private void Text1_Click(object sender, EventArgs e)
     { 
     if (sender is TextObject)
     {
     //Define sender as TextObject
     TextObject obj = sender as TextObject;
     //Method of highlighting an object
     SwitchColor(obj);
     if(Report.Preview != null)
     {
     // Refresh the current page of the report in the cache, if the report is viewed on a desktop
     Report.PreparedPages.ModifyPage(Report.Preview.PageNo - 1, obj.Page as ReportPage);
     //Refresh preview
     Report.Preview.Refresh();
     } 
     }
     }
     
     private void SwitchColor(TextObject obj)
     {
     // Check whether the object is filled with yellow
     if (obj.Fill is SolidFill && (obj.Fill as SolidFill).Color != Color.Yellow)
     //Fill with yellow
     obj.Fill = new SolidFill(Color.Yellow);
     // Clear the fill
     else
     obj.Fill = new SolidFill(Color.Transparent); 
     }
    

    如你所見(jiàn),我們從點(diǎn)擊事件中提取Sender對(duì)象,將其定義為文本對(duì)象并更改其填充。然后,重新繪制緩存中的報(bào)表頁(yè)面。如果我們有一個(gè)web報(bào)表,我們只需更改對(duì)象的填充,而無(wú)需重新繪制報(bào)表頁(yè)面。

    我們?cè)倏紤]下另一種替代方法。

    方法2:這種方法的本質(zhì)是確定對(duì)象的坐標(biāo),我們將用顏色填充。然后我們更新緩存中的報(bào)表頁(yè)面,就像第一個(gè)方法一樣。

    private void Text1_Click(object sender, EventArgs e)
     { 
     if (sender is TextObject)
     {
     // Get the current page number
     int pageNo = Report.Preview.PageNo - 1;
     // Get the page by number
     ReportPage page = Report.PreparedPages.GetPage(pageNo);
     // Define sender as TextObject - this phantom object, we also need the original object from the preview page
     TextObject obj = sender as TextObject;
     // Looking the original object on the preview page
     foreach(ReportComponentBase b in page.AllObjects)
     // It is necessary to identify the object by name and coordinates
     if (b.Name == obj.Name && b.AbsTop == obj.AbsTop && b.AbsLeft == obj.AbsLeft)
     {
     // Get the original object
     obj = b as TextObject;
     break;
     } 
     // Defining the object's fill
     if (obj.Fill is SolidFill && (obj.Fill as SolidFill).Color != Color.Yellow)
     obj.Fill = new SolidFill(Color.Yellow);
     else
     obj.Fill = new SolidFill(Color.Transparent);
     
     // Update the report page in the cache
     Report.PreparedPages.ModifyPage(pageNo, page);
     // Refresh prewiew
     Report.Preview.Refresh();
     }
     }
    

    我們來(lái)演示一下這個(gè)代碼的操作:

    如何實(shí)現(xiàn)報(bào)表中高亮顯示文本功能

    這種方法客觀上比較復(fù)雜,只適用于預(yù)覽模式。但是,它有它的優(yōu)點(diǎn)。假設(shè)你不僅要突出顯示你單擊的文本對(duì)象,還要突出顯示表中的整個(gè)行。然后添加另一個(gè)文本對(duì)象,使其與我們將單擊的對(duì)象重疊。我們拉伸它的整個(gè)寬度。文本對(duì)象的左邊界與文本對(duì)象的左邊界重合,為此我們創(chuàng)建了一個(gè)點(diǎn)擊事件,這一點(diǎn)很重要。右鍵單擊,并從菜單中選擇:

    如何實(shí)現(xiàn)報(bào)表中高亮顯示文本功能

    就這樣,我們將這個(gè)對(duì)象移動(dòng)到背景,以便它不與其他文本字段重疊。

    如何實(shí)現(xiàn)報(bào)表中高亮顯示文本功能

    修改一下我們以前的代碼:

    if (b.AbsTop == obj.AbsTop && b.AbsLeft == obj.AbsLeft)
     {
     // Get the original object
     obj = b as TextObject;
     break;
     } 
    

    我從條件中刪除了名稱的比較,只留下了字段開(kāi)始坐標(biāo)的比較?,F(xiàn)在運(yùn)行報(bào)表并點(diǎn)擊產(chǎn)品名稱:

    如何實(shí)現(xiàn)報(bào)表中高亮顯示文本功能

    如上所示,這兩種方法都是可行的。第一種方法比較簡(jiǎn)單,但是只允許你選擇Sender中的特定對(duì)象。第二個(gè)更復(fù)雜,但它可以讓你突出Sender之外的的對(duì)象。你只需要指定他們的坐標(biāo)。在web報(bào)表中,你只能使用第一種方法。

    當(dāng)然,你不僅可以更改背景顏色,還可以更改文本本身的顏色、樣式或字體。另外,當(dāng)以任何支持的格式(例如PDF)導(dǎo)出報(bào)表時(shí),所有這些修改都會(huì)被保留。

    產(chǎn)品介紹 下載試用 | 優(yōu)惠活動(dòng) | 在線客服 | 聯(lián)系Elyn

     

    推薦閱讀

    FastReport 2018 最新版本下載
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();