• <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  評(píng)論-2670  文章-0  trackbacks-0
                GacUI今天完成了可自定義格式的ComboBox。ComboBox分為兩種,一種是空空如也全部要自己做的只提供下拉功能的GuiComboBoxBase,另一種是在構(gòu)造函數(shù)接受一個(gè)GuiSelectableListControl從而自動(dòng)將列表與ComboBox關(guān)聯(lián)起來的GuiComboBoxListControl。因?yàn)榱斜砜丶荕VC和virtual mode的混合體,所以如果要自動(dòng)把列表的文本顯示到ComboBox上面去的話,那么加進(jìn)去的基類為GuiSelectableListControl(預(yù)定義的所有列表控件的基類都是這個(gè),包括TreeView)所提供的ItemProvider必須實(shí)現(xiàn)一個(gè)GuiListControl::IItemPrimaryTextView的View。當(dāng)然,沒有這個(gè)View也可以,因?yàn)镃omboBox同時(shí)也可以讓你自定義“選中列表”的顯示方法——不一定非的是一個(gè)字符串,也可以是圖片啊色塊什么的。

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



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

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

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

            評(píng)論:
            # re: GacUI完成可自定義格式的ComboBox 2012-01-04 17:23 | 空明流轉(zhuǎn)
            師祖威武!  回復(fù)  更多評(píng)論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-07 00:58 | 求教
            我忘記您的csdn的BLOG的地址了,能告訴下么,我記得上面有篇文章對(duì)俺挺有用,謝謝。  回復(fù)  更多評(píng)論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-07 01:15 | 陳梓瀚(vczh)
            @求教
            我自己也忘了……那篇文章是什么名字……  回復(fù)  更多評(píng)論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-07 09:53 | 求教
            @陳梓瀚(vczh)
            關(guān)鍵問題不就是因?yàn)橛洸坏昧嗣矗蝗辉缇虶OOGLE出來了。
              回復(fù)  更多評(píng)論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-08 18:59 | 裝配腦袋
            快寫文檔啊~~  回復(fù)  更多評(píng)論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-08 19:49 | 陳梓瀚(vczh)
            @裝配腦袋
            等我反射做完,我就用xml來阻止文檔然后生成成html……  回復(fù)  更多評(píng)論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-11 19:31 | 裝配腦袋
            @陳梓瀚(vczh)
            需要寫你那些Layout啥的概念……  回復(fù)  更多評(píng)論
              
            # re: GacUI完成可自定義格式的ComboBox 2012-01-11 19:49 | 陳梓瀚(vczh)
            @裝配腦袋
            會(huì)有的……  回復(fù)  更多評(píng)論
              
            国产成人精品白浆久久69| 99久久婷婷免费国产综合精品| 国产精品伊人久久伊人电影| 久久国产视屏| 久久久久亚洲Av无码专| 国产精品一区二区久久精品无码 | 久久久久久A亚洲欧洲AV冫| 伊人久久精品无码二区麻豆| 久久线看观看精品香蕉国产| 2021最新久久久视精品爱 | 亚洲色婷婷综合久久| 久久精品夜色噜噜亚洲A∨| 久久久久99精品成人片直播| 老司机午夜网站国内精品久久久久久久久 | 久久精品极品盛宴观看| 狠狠久久亚洲欧美专区| 亚洲午夜久久久久久久久久 | AV色综合久久天堂AV色综合在| 亚洲国产成人精品女人久久久 | 亚洲欧美日韩精品久久亚洲区 | 欧美国产成人久久精品| 99久久精品无码一区二区毛片| 久久精品国产亚洲av影院| 99久久国产亚洲综合精品| 伊人色综合久久天天人守人婷| 国内精品伊人久久久久网站| 精品久久久久久久无码| 久久婷婷国产综合精品| 久久无码人妻一区二区三区午夜| 中文字幕久久波多野结衣av| 久久久精品人妻一区二区三区蜜桃 | jizzjizz国产精品久久| 久久精品一本到99热免费| 人妻无码中文久久久久专区| 日韩av无码久久精品免费| 丰满少妇人妻久久久久久| 狠狠色丁香婷综合久久| 国产精品欧美亚洲韩国日本久久| 国产香蕉97碰碰久久人人| 久久99精品免费一区二区| 久久亚洲高清综合|