• <menu id="w2i4a"></menu>
  • logo DevExpress WinForms使用教程

    文檔首頁>>DevExpress WinForms使用教程>>DevExpress Winforms使用技巧教程:如何創(chuàng)建自定義DevExpress報(bào)表控件(上)

    DevExpress Winforms使用技巧教程:如何創(chuàng)建自定義DevExpress報(bào)表控件(上)


    下載DevExpress v20.1完整版 DevExpress v20.1漢化資源獲取

    DevExpress Winforms Controls 內(nèi)置140多個(gè)UI控件和庫,完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序。想要體驗(yàn)?點(diǎn)擊下載>>

    本文記錄如何構(gòu)建自定義的DevExpress Report控件(Swiss QR-Bill報(bào)表組件),以及如何解決開發(fā)過程中遇到的問題,希望這些信息對創(chuàng)建自定義DevExpress Report控件的用戶有價(jià)值。

    為幫助消除報(bào)表控件開發(fā)過程中的神秘性,本文介紹如何創(chuàng)建設(shè)計(jì)時(shí)設(shè)置、序列化設(shè)計(jì)器組件和相關(guān)的“bricks”,以及如何渲染和打印組件。第一部分包含有關(guān)Swiss QR Bill控件的一般信息,并描述控件本身的要求;第二部分詳細(xì)介紹了組件的實(shí)現(xiàn)。

    一般信息

    Swiss QR Bill是一種帶有QR碼的新型付款單,Swiss QR Bill包含以下元素:

    • 收據(jù)
    • 付款部分
    • 條碼

    發(fā)票可以使用以下布局:

    • 在A4紙上打印的“全額”發(fā)票;
    • 在A6紙上打印的“簡短”發(fā)票;
    • 連續(xù)打印發(fā)票;
    • 在單個(gè)頁面上打印的發(fā)票。

    “完整”發(fā)票包含收據(jù),而“空”發(fā)票僅包含付款信息。 組件的BillKind屬性指定完整發(fā)票的PaymentAndReceipt值和短期發(fā)票的PaymentOnly值,連續(xù)打印或單獨(dú)打印是通過IntegratedMode屬性指定的。

    將發(fā)票打印在A4或A6紙上(或?qū)С鰹镻DF),并分別通過BillOption.PreviewSeparatorKind和BillOption.PdfSeparatorKind屬性指定perforation line。該組件允許您更改任何字段的語言和字體,StringData屬性可用于將字段綁定到外部數(shù)據(jù)源。

    報(bào)表控件開發(fā)–概述

    若要創(chuàng)建一個(gè)新的報(bào)表控件,您必須:

    1. 選擇一個(gè)base類,如果找不到合適的控件派生,請從XRControl類繼承一個(gè)組件。
    2. 創(chuàng)建組件的對象模型,指定一組屬性和相關(guān)屬性,這些屬性決定如何序列化屬性以及如何在Property網(wǎng)格中顯示屬性。
    3. 為Visual Studio和End User Designer創(chuàng)建組件設(shè)計(jì)器,設(shè)計(jì)人員在設(shè)計(jì)時(shí)確定組件的外觀和操作,根據(jù)需要添加屬性。
    4. 選擇組件的“brick”,一個(gè)明顯的選擇是基類創(chuàng)建的積木,但是,如果組件從XRControl類繼承,則有兩個(gè)選項(xiàng) - 如果需要簡單的Brick,則選擇VisualBrick作為Brick的基類;如果需要的容器,則選擇PanelBrick。
    5. 指定組件如何創(chuàng)建其"brick",并將組件的屬性映射到brick的特征。
    6. 實(shí)現(xiàn)BrickExporter類來呈現(xiàn) "brick",覆蓋用于繪圖和導(dǎo)出的方法。

    以下各部分詳細(xì)介紹了如何更詳細(xì)地構(gòu)建SwissQRBill組件。

    組件實(shí)現(xiàn)

    由于SwissQRBill組件是XRControl的后代,因此它在設(shè)計(jì)器的工具箱中具有自己的 "brick"、序列化和項(xiàng)。

    設(shè)計(jì)時(shí)

    要將組件添加到Visual Studio工具箱,該組件必須具有ToolBoxItem(true)屬性。

    WinForms End-User Designer要求向IToolBoxService注冊該組件,處理DesignPanelLoaded事件,然后調(diào)用IToolBoxService.AddToolBoxItem方法來注冊組件。

    若要實(shí)現(xiàn)組件的設(shè)計(jì)時(shí)功能,請分別為Visual Studio和WinForms End-User Designer添加Designer和XRDesigner屬性??丶恼{(diào)整大小規(guī)則和智能標(biāo)記項(xiàng)必須根據(jù)需要進(jìn)行修改,智能標(biāo)記項(xiàng)是通過在組件設(shè)計(jì)器中注冊的DesignerActionList對象指定的, GetSelectionRulesCore方法修改控件的調(diào)整大小規(guī)則。

    設(shè)置屬性網(wǎng)格時(shí),請?zhí)貏e注意可擴(kuò)展對象。 在此示例中,將創(chuàng)建ExpandableObjectConverter后代以重寫ConvertTo方法,新的ConvertTo方法實(shí)現(xiàn)更改了在屬性網(wǎng)格編輯器中顯示的字符串。 AddressTypeConverter的GetProperties方法刪除該地址類型不必要的屬性。


    DevExpress技術(shù)交流群2:775869749      歡迎一起進(jìn)群討論

    40分鐘教你入門DevExpress v20.1最新推出控件——甘特圖,立即報(bào)名>>

    慧都高端UI界面開發(fā)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    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); })();