乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      listview

       quasiceo 2014-08-06

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

       

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

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

      一個完整的簡單例子如下:

       

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

       

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

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

       

       

       

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      在使用Virtual   ListView方式時,如果要對數(shù)據(jù)排序,只需對你保存的內(nèi)部數(shù)據(jù)(這里時vector對象)排序,然后ListView-> Refresh()即可。這時你在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) :

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多