小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

listview

 quasiceo 2014-08-06

ListView在操作大量數(shù)據(jù)時(shí)慢的問題! (CSDN-CSDN社區(qū)-C++ Builder-基礎(chǔ)類) :

 

--> 26樓   max_wzg (暴走-銀狼) :

采用常規(guī)方法處理ListView,在數(shù)據(jù)量大時(shí)無論是還是用了BeginUpdata和EndUpdata()還是處理WM_EraseBkgnd信息都不會(huì)得到理想的效果,那答案是什么呢?
嗯,采用所謂Virtual   ListView。
說起來很神秘,其實(shí)點(diǎn)通了很簡單。
在于把ListView-> OwnerData設(shè)為true,然后直接設(shè)置
ListView-> Items-> Count為數(shù)據(jù)總數(shù),實(shí)際的數(shù)據(jù)可以保在任意其它速度較快且可直接索引的容器里(如STL中的vector),然后關(guān)鍵是在OnData事件中寫入代碼通過Item-> Index從容器中(如vector)取出數(shù)據(jù),然后用
Item-> Caption   =   ???;
Item-> SubItems-> Add(???);
Item-> SubItems-> Add(???);
來動(dòng)態(tài)的寫入數(shù)據(jù)到ListView用于UI顯示,如此Virtual   ListView即完成.

一個(gè)完整的簡單例子如下:

 

--> 28樓  cdws222  (二當(dāng)家) :
不過如果你看到這個(gè)回復(fù)候能不能解釋一下
vector <ListViewData*>   m_lvDataVector;是什么意思
我是個(gè)菜鳥,還不會(huì)這個(gè)

 

--> 29樓  max_wzg (暴走-銀狼) :

vector是標(biāo)準(zhǔn)C++庫的一部分,STL中的容器類之一,
你可以簡單地把它理解為C++內(nèi)置數(shù)組的增強(qiáng)版,詳細(xì)的你可以看看有關(guān)標(biāo)準(zhǔn)C++的書或文章,可以把這當(dāng)成開始學(xué)習(xí)泛形編程的一個(gè)好的開端,推薦《C++Primer》。
學(xué)好標(biāo)準(zhǔn)C++庫非常重要,既然用BCB,就要充分發(fā)揮C++的強(qiáng)大功能,不然真的還不如去用Delphi.

 

 

 

二、http://topic.csdn.net/t/20020728/13/905888.html

討論ListView里顯示十萬級(jí)以上記錄時(shí),象SQL Server里的返回所有行的方式顯示記錄,怎么實(shí)現(xiàn)?  (CSDN-CSDN社區(qū)-C++ Builder-基礎(chǔ)類) :

--> 25樓  bigwhiteshark  (變性鯊魚) :

哈哈正中本人下懷
如何用TListView來處理大量數(shù)據(jù)

采用常規(guī)方法處理ListView,在數(shù)據(jù)量大時(shí)無論是還是用了BeginUpdata和EndUpdata()

還是處理WM_EraseBkgnd信息都不會(huì)得到理想的效果,那答案是什么呢?嗯,

采用所謂Virtual   ListView技術(shù)。說起來很神秘,其實(shí)點(diǎn)通了很簡單。

通常ListView中的所有數(shù)據(jù)都是由ListView自己來管理的,它負(fù)責(zé)這些數(shù)據(jù)空間的分配和釋放,

當(dāng)你把ListView-> OwnerData設(shè)為true時(shí),ListView就把數(shù)據(jù)的管理權(quán)交給了你,而它只負(fù)責(zé)顯示。

這時(shí)你需要自己來為數(shù)據(jù)分配和釋放空間,至于你怎樣來管理這些數(shù)據(jù)完全有你自己來定,

ListView完全不關(guān)心,當(dāng)ListView需要顯示某條數(shù)據(jù)時(shí),它就調(diào)用OnData事件,

你只要在這個(gè)事件的處理函數(shù)里指定ListView即將顯示的Item的內(nèi)容就可以了。

這就是所謂的Virtual   ListView技術(shù)。

由于ListView對(duì)數(shù)據(jù)管理的功能強(qiáng)大,隨之而來的卻是效率低下,

如果你采用更高效的數(shù)據(jù)管理方式就會(huì)極大的改變效率。

而且Virtual   ListView只在數(shù)據(jù)需要顯示時(shí)才調(diào)用OnData事件載入數(shù)據(jù),所以速度很快。

下面的例子中,假設(shè)ListView中需要顯示4列數(shù)據(jù),所有的數(shù)據(jù)被保存在vector里。

速度很快,5000條數(shù)據(jù)只要1秒左右.

在使用Virtual   ListView方式時(shí),如果要對(duì)數(shù)據(jù)排序,只需對(duì)你保存的內(nèi)部數(shù)據(jù)(這里時(shí)vector對(duì)象)排序,然后ListView-> Refresh()即可。這時(shí)你在ListView中看到的數(shù)據(jù)就是排好序的數(shù)據(jù)了。

2002-12-12     大白鯊

 

 

三、http://topic.csdn.net/t/20040719/17/3189489.html

300分求解決listview大量數(shù)據(jù)添加慢的方法  (CSDN-CSDN社區(qū)-Delphi-VCL組件開發(fā)及應(yīng)用 ):

--> 3樓  fei19790920 (飯桶超人II) :

標(biāo)題:   讓ListView更快的顯示數(shù)據(jù)  
關(guān)鍵字:   Listview,Virtual,海量數(shù)據(jù)  
分類:   成功心得  
密級(jí):   公開  
(評(píng)分:   ,   回復(fù):   6,   閱讀:   312)   ??  
最近剛剛完成一個(gè)項(xiàng)目,用Listview取代難看的DBGrid顯示數(shù)據(jù)。在我的機(jī)器上運(yùn)行正常。一切看起來還不錯(cuò),但是,且慢。在用戶那里用實(shí)際數(shù)據(jù)一顯示,我當(dāng)場暈倒。天哪,區(qū)區(qū)4000條記錄,居然顯示了2分鐘32秒……
經(jīng)過試驗(yàn),發(fā)現(xiàn)Listview在插入1000條記錄時(shí)速度尚可忍受,然后插入速度逐漸變慢。隨著記錄數(shù)的增加,速度越來越慢。
怎么辦?使用第三方控件?
正在彷徨無計(jì)之際,CSDN和大富翁上的相關(guān)帖子讓我受到啟發(fā)。對(duì),就用Virtual模式。
首先研究大家提到的一個(gè)Delphi自帶的例子,就是{$DELPHI}/Demos/Virtual   Listview文件夾下的那個(gè)工程。
讓Listview進(jìn)入Virtual模式其實(shí)很簡單。設(shè)置Listview的OwnerData屬性為True,然后設(shè)置Listview.Items.Count的值,最后在Listview的OnData事件處理方法中給指定Index的Item提供Caption、SubItems等信息即可。
當(dāng)然,你需要自己管理你要顯示的數(shù)據(jù)。我使用了一個(gè)TList類,當(dāng)然也可以使用數(shù)組。
以上是我在自己重新編寫的Demo中觀察到的。但是,當(dāng)我依照此思路將其運(yùn)用到我的項(xiàng)目中時(shí),發(fā)現(xiàn)當(dāng)鼠標(biāo)在屏幕上移動(dòng)的時(shí)候,Listview本身不停的閃爍,根本無法工作。這是怎么回事?
我在網(wǎng)上尋尋覓覓,但遲遲找不到答案。也動(dòng)過在大富翁和CSDN上詢問的念頭,但是又不甘心。
察看TListView的源碼,除了看到OnData實(shí)際上由系統(tǒng)LVN_GETITEMINFO消息觸發(fā)外,沒有任何可用信息。
仔細(xì)對(duì)比我寫的Demo、Delphi自帶的例程和我的項(xiàng)目代碼,發(fā)現(xiàn)一點(diǎn)重大的不同。那就是,前兩者在Ondata事件處理方法中Item.SubItems是用Add方法添加的,而我的項(xiàng)目中是直接給Item.SubItems.CommaText賦值。難道是因?yàn)檫@一點(diǎn)?我作了一些修改,呵呵,大功告成!
經(jīng)過實(shí)測(cè),現(xiàn)在顯示4000條復(fù)雜紀(jì)錄只需區(qū)區(qū)30秒,而這時(shí)間主要是花費(fèi)在數(shù)據(jù)庫(我們的表結(jié)構(gòu)確實(shí)存在問題)查詢上,相信如果數(shù)據(jù)庫結(jié)構(gòu)得以優(yōu)化,顯示4000條記錄需時(shí)絕不會(huì)超過10秒。
至此,問題得到解決。相信許多正在苦苦尋覓第三方控件的朋友能夠由此得到一些啟發(fā)

-->  4樓   fei19790920 (飯桶超人II) :

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多