合计有一个属性是active要设为true

解决方案 »

  1.   

    唉,首先感谢大家的回答,都怪我没有把问题描述清楚,合计值我当然知道怎样弄出来,所以不用大家解释了,我的问题是怎样显式地调用这个合计功能。比如说,目前某列的合计值为100,而其中有一条记录当前列值=10,如果我把10改为20,应该合计值=110就对不对?但现在我如果对数据暂时不存盘也不刷新(我是用BatchUpdate缓存更新),DBGridEh的合计值是没有改变的,还是100,有什么办法可以在DBGridEh的OnColExit事件中编程,强迫DBGridEh立刻把最新的合计
    值计算并且显示出来呢?
    希望大家帮我想想办法,这个问题确实困扰了我很长时间,我实在没空看DBGridEh的源码。
      

  2.   

    这是当然的了
    要先POST后再调用DBGridEh1.SumList.RecalcAll;即可
      

  3.   

    不是吧?我的一改合计也跟着自动改了啊
    可能是你哪个属性没设好吧
    你把dbgrideh的sumlist/active属性设为true试试
      

  4.   

    你只要调用DataSet的Next方法或者滚动一下数据集应该就可以实现自动更新了,我一直这样用的,你是不是什么设置设的不对?
      

  5.   

    唉,Post后当然可以更新啦,问题是我暂时没有Post呀,数据翻滚后是自动Post的,大家都没有回答到点子时,我之所以在DBGridEh的OnColExit事件中编程,就是这个道理呀,我用的是缓存更新,所以RequestLive=False,我就是要在数据尚未Post时就能出合计值呀!如果你叫我在OncolExit中直接写Post语句,这个问题根本就是白问。
      

  6.   

    没用过这东东,不过你试一下将重写它的Field.OnChange事件在Field.OnChange事件中写什么:DBGridEh1.SumList.RecalcAll
    比OnColExit那写好多了。
      

  7.   

    var
      myMark: TBook;
    begin
      with myDataSet do
      begin
        myMark := GetBook;
        Next;
        GotoBook(myMark);
        FreeBook(myMark);
      end;
    end;
      

  8.   

    在DBGridEh.OnKeyPress事件中写试试,虽然有些浪费,但是可能行呢
      

  9.   

    同意liang_z(千山一刀之忍者神龟) 的做法,我也是这样做的。
    在Field.OnChange写吧。