主要是更新来不及,无法重画。
Client是什么,DataSet么,更新之前,你可以调用它的DisableControls;
更新完后调用它的EnableControls方法。

解决方案 »

  1.   

    是ClientDataSet控件ClientDataSet1.DisableControls;
    ClientDataSet1.applyupdates(0);
    ClientDataSet1.ensableControls;
    是这样吗?可是还是不行?
      

  2.   

    可能是内存泄漏或是资源泄漏造成的Canvas工作不正常。1)请检查系统资源是否不足
    2)如果是你的程序造成的,那么请检查你的程序,是否存在上述问题。
      

  3.   

    不可能我根本就还没写什么代码?
    给个mail我将原程序发给你看一下行吗?
      

  4.   

    呵呵,dana,就是按你那方法写呀
      

  5.   

    不行啊,你给个mail我把程序发过去给你试一下行吗?
    程序很小,因为我还没编什么了就出现这种错误,我不知如何继续下去。
      

  6.   

    dana:我的QQ 20698428,[email protected]是能用的,其它的不方便说,希望在后天之前能解决你的事。
      

  7.   

    Dana:我的QQ是20698428,[email protected]是可以用的
    那个地址不方便现在说,赫赫
      

  8.   

    那好吧我们就用mail联系吧,我这就给你发mail。
      

  9.   

    不行啊你[email protected]的那个发不出去(又退回来了)
    [email protected] 也是你的吗?
      

  10.   

    其实很简单,你的程序中有BUG。也就是说你程序中有资源没有释放,导致了内存泄漏。举个例子:你在程序中动态的打开几个数据库控件,在窗体关闭是却不关闭那几个数据库控件。多运行几个那你会发现,一段时间之后,就会报错了!这就是内存泄漏了!
      

  11.   

    发给我看看吧。
    [email protected]
      

  12.   


    跟踪分析了好一会儿, 问题的焦点集中在了TDBGrid 上的一个什么Layout 的处理上, 
    真是让人头昏它那里面那些判断及消息机制太复杂, 也许就是这样影响了它的
    效率。我改用了一个StringGrid, 
    显示TClientData 代码如下,   with ClientDataSet1 do
       begin
            for j:=1 to Fields.Count do
            begin
                Grid.Cells[j,0]:=Fields[j-1].DisplayName;
            end;
            for i :=1  to RecordCount do
            begin
                for j:=1 to  Fields.Count do
                begin
                    Grid.Cells[j,i]:=Fields[j-1].AsString;
                end;
                next;
            end;
    用这样处理是不用出现三次就停止显示的问题。
    我不会就这样就了事的。。
      

  13.   

    Delphi有没有升级?
    没有升级的在用listview时,会有这样的提示。