• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-341  評論-2670  文章-0  trackbacks-0
                GacUI今天完成了可自定義格式的ComboBox。ComboBox分為兩種,一種是空空如也全部要自己做的只提供下拉功能的GuiComboBoxBase,另一種是在構造函數接受一個GuiSelectableListControl從而自動將列表與ComboBox關聯起來的GuiComboBoxListControl。因為列表控件是MVC和virtual mode的混合體,所以如果要自動把列表的文本顯示到ComboBox上面去的話,那么加進去的基類為GuiSelectableListControl(預定義的所有列表控件的基類都是這個,包括TreeView)所提供的ItemProvider必須實現一個GuiListControl::IItemPrimaryTextView的View。當然,沒有這個View也可以,因為ComboBox同時也可以讓你自定義“選中列表”的顯示方法——不一定非的是一個字符串,也可以是圖片啊色塊什么的。

                最新的代碼可以在Vczh Library++3.0(Candidate\GUI\GuiDemo\GuiDemo.sln)中找到,運行結果如圖所示:



                這個ComboBox之所以直接跟GuiListControl結合起來,還是歸功于GuiListControl的MVC和virtual mode混合功能的設計。GuiListControl可以自定義數據源、數據顯示樣式、數據排列算法以及坐標軸的。其中數據源運行時可修改但是不可直接替換對象。每一種數據顯示樣式都可以要求數據源提供某種固定格式的View。譬如list::TextItemStyleProvider就要求數據源提供list::TextItemStyleProvider::ITextItemView,ListView的六種樣式共享list::ListViewItemStyleProvider::IListViewItemView。如果你需要設計新的view,或者為已知的數據源提供view,可以簡單的繼承那個數據源類并override它的RequestView和ReleaseView方法。這樣View就成為了數據源和數據顯示樣式中間的一個媒介。不同的數據顯示樣式可以共享View,不同的數據源也可以提供相通的View,這樣他們之間的耦合就解除了。用戶可以根據各自的性能要求來實現View。

                舉個例子,你直接從文件讀出來的一個巨大的struct數組,要求你轉換成一個一個的object顯然是太浪費性能了。在這種情況下,你只需要實現一個GuiListControl::IItemProvider并提供具體的View的實現,就可以讓列表控件僅僅在需要顯示數據的時候,才使用index來向View獲取具體的數據內容。這可以大大提高性能,而且甚至可以在可能的情況下實現“一邊拖滾動條,一邊異步加載數據”這樣的高級操作。

                更多的ComboBox樣式會在接下來提供到Demo里面去,可能會有ColorPicker或者FontPicker等等,如果時間充足的話。
            posted on 2012-01-04 06:24 陳梓瀚(vczh) 閱讀(2617) 評論(8)  編輯 收藏 引用 所屬分類: GacUI

            評論:
            # re: GacUI完成可自定義格式的ComboBox 2012-01-04 17:23 | 空明流轉
            師祖威武!  回復  更多評論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-07 00:58 | 求教
            我忘記您的csdn的BLOG的地址了,能告訴下么,我記得上面有篇文章對俺挺有用,謝謝。  回復  更多評論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-07 01:15 | 陳梓瀚(vczh)
            @求教
            我自己也忘了……那篇文章是什么名字……  回復  更多評論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-07 09:53 | 求教
            @陳梓瀚(vczh)
            關鍵問題不就是因為記不得了么,要不然早就GOOGLE出來了。
              回復  更多評論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-08 18:59 | 裝配腦袋
            快寫文檔啊~~  回復  更多評論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-08 19:49 | 陳梓瀚(vczh)
            @裝配腦袋
            等我反射做完,我就用xml來阻止文檔然后生成成html……  回復  更多評論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-11 19:31 | 裝配腦袋
            @陳梓瀚(vczh)
            需要寫你那些Layout啥的概念……  回復  更多評論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-11 19:49 | 陳梓瀚(vczh)
            @裝配腦袋
            會有的……  回復  更多評論
              
            污污内射久久一区二区欧美日韩| 亚洲国产成人久久综合野外| 久久综合九色综合网站| 国产精品美女久久久m| 精品国产综合区久久久久久| 久久久国产打桩机| 久久精品国产99久久香蕉| 亚洲AV无码一区东京热久久| 99久久成人18免费网站| 亚洲精品白浆高清久久久久久| 伊人久久综在合线亚洲2019 | 欧美久久一区二区三区| 狠狠色婷婷久久一区二区三区| 日本加勒比久久精品| 国产精品欧美久久久天天影视| 一级a性色生活片久久无| 久久久久久免费一区二区三区| 亚洲国产精品成人久久| 伊人久久大香线蕉综合热线| 国内精品欧美久久精品| 97久久香蕉国产线看观看| 国内精品综合久久久40p| 久久精品桃花综合| 香蕉久久夜色精品国产2020| 久久久精品视频免费观看| 国产99久久九九精品无码| 久久精品嫩草影院| 久久香蕉国产线看观看乱码| 99久久99久久精品免费看蜜桃| 99久久国产综合精品女同图片| 国产免费久久精品99re丫y| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久国产高潮流白浆免费观看| 亚洲国产成人精品女人久久久 | 亚洲乱码精品久久久久..| 久久精品国产亚洲AV影院| 久久亚洲精品无码aⅴ大香 | 四虎久久影院| 亚洲AV无码久久精品成人| 久久国产免费观看精品3| 精品久久久久久成人AV|