Delphi 实时快速显示大量数据,会闪屏,怎么解决?

解决方案 »

  1.   

    不知道你是用的什么空间,如果是list的话可以使用虚拟列表。
    虚拟列表
      

  2.   

    对于人类来说,多快最实时。
    电影都是24帧/秒,游戏是30~100帧/秒,但是这个是建立在人可以预测的连续变化基础上的。如果不是可预测,非连续变化,如播放幻灯片,一般是3~5秒1帧,快的也超过1秒1帧。好,回到你的问题,为什么要实时,要看清数据的话需要1秒,你的程序只需要100ms刷新一次界面就可以了,如果是动画,10ms刷新一次就可以。
    大量数据?一屏能显示多少行数据?10行?100行?还是1000行?其实能显示出来的只有几十行数据,只是刷新显示的这几行是没不会有任何压力的。
     
    TStringGrid 自画界面,600万行数据10ms刷新没有任何压力。
      

  3.   

    读大数据闪屏,是读取数据与屏幕刷新,相互争抢CPU资源造成。
      

  4.   

    application.processmessage
      

  5.   

    读大数据闪屏,是读取数据与屏幕刷新,相互争抢CPU资源造成。
      

  6.   

    如果有doublebuffer属性,设置为true试试
      

  7.   

    使用LockWindowUpdate进行锁屏操作,完成后进行解锁
      

  8.   

    闪屏的区域设置DoubleBuffered := True; 
      

  9.   

    没那么复杂。
    ADOQuery1.DisableControls 
    。。
    ADOQuery1.EnableControls
      

  10.   

    virtu list也是不错的方法 学习了
      

  11.   

    推荐用TNXGRID控件来加载数据
      

  12.   

    启用doubleBufferd;如果是表格的是先beginupdate ....... endupdate
      

  13.   

    不要立即画在屏幕上。
    50毫秒一次,画在内存里自建的TBitmap里。然后贴到Canvas上。