有文本文件一个,内容很简单,就是有10万条左右的客户id号记录,add到listview中,速度慢,而对listview中的item进行delete,特别是全部clear的时候,更是慢的出奇,程序跟死了差不多,要等好久才行。有什么解决方法啊,我看有的别人的程序,导入大文本速度就很快,并且清除的时候简直就是瞬间完成,难道他们用的不是listview,还是有别的解决方法???

解决方案 »

  1.   

    ListView.Items.BeginUpdate;
    try
      ...  //操作ListView
    finally
      ListView.Items.EndUpdate;
    end;
      

  2.   

    楼上的方法我试过,导入速度还是不快,对里面的item进行delete和clear的时候,一样的情况。难道是因为listview里存的数据太多了,所以删除一项就如此慢
      

  3.   

    楼上说了另外其实为什么会出现10W记录在一个LISTBOX的情况呢?客户会从里面选它需要的?我的意思是是否可以通过其它方法来进行优化。
      

  4.   

    自带的东西都快不了
    TMemo载入个几m的文本也慢的要死
      

  5.   

    用什么其他方法来优化??使用者可能用这个listview来显示几条数据,也可能去显示几万条数据,几条数据自然很快,对几万条进行操作就不行了。还有同样我看到有人的程序,也是导入十几万条文本数据,进行相同的操作,速度很快,导入就是在10秒以内搞定,而对里面的item进行操作瞬间就完成,难道用的不是listview,但看起来就是啊。还有什么第三方的控件,提高速度的
      

  6.   

    listview有些力不从心了,换一个吧
      

  7.   

    使用Virtual ListView, Delphi 用好像有示例,或者到网上可以找到
    主要思路是,
      读入文件,分析数据,保存在内存中,
      需要显示时,listview 会产生获取数据事件或自绘事件
      

  8.   

    10W左右的ID号,数据量并不大(估计在100K当量左右)。按道理无论是显示/删除/清除速度都不会慢,应该是楼主的程序的问题了,并不是这个控件的问题或者说不是数据量的问题。将你的代码拿出来看下,以便于诊断
      

  9.   

    用 TStringGrid 。并且在OnDrawCell事件中绘制。
      

  10.   

    TListView的OwnerData打开,然后在OnData事件中处理需要显示的数据。
    Delphi自带的Demo中有示例:Virtual ListView
      

  11.   

    TLISTVIEW   OwnerData=true  然后自己放入数据,自己画一下.我的四列,十万条数据,几秒钟就出来了.呵呵,不过很多功能会失去.
      

  12.   

    看delphi demo里有VitualTreeView的例子
      

  13.   

    Virtual ListView 自带的memo里有例程,10w不多,100w也很快。
    OwnerData:=true;
    用stirnglist载入文件。
    listview.items.count:=stringlist.count;
    在OwnerData中:
    item.caption:=stringlist[item.index];
    report显示时,要提前加一栏,栏的标题何以隐藏。
      

  14.   

    用virtual方式,只有这种方式显示最快了。
    TDBGrid也用了这种方式。十万记录几乎瞬间完成了。
      

  15.   

    用 Ondata 事件来显示 10W 的数据也是小儿科。
      

  16.   

    用virtual方式  -----但删除多条记录起来也会很慢的   怎么处理?
      

  17.   

    导入10w条到一个listview里有什么意义呢,让用户如何进行后续操作?
      

  18.   

    顶Harryfin,控件不是问题,关键是思路。
      

  19.   

    “显示 10W ”
    lz看别的人 应该假象,
    谁会同时显示10W,肯定是用了分页了 
      

  20.   

    每次显示这么多 或者更多的
    TListView就算不会被玩死,你自己也会被玩死
      

  21.   

    虽然一次10w条不科学,但Delphi做起来是完全没问题的,Delphi7的demo里自带了一个叫做Virtual Listview的例子,照着做就行了。
      

  22.   

    这10W的数据你不需要做业务处理?数据量越大,业务处理负荷就越大
    如果只是单单的显示的话用DBGrid