现在有一个DBGrid,因为使用DrawColumnCell事件重绘了当前记录行的颜色,使焦点离开DBGrid后还能显示那一行记录。现在的问题是,当记录比较多,当前比如显示在第3条记录,滚动滚动条后,点击第4条记录,现在就是第3和第4行都有指定颜色的背景,怎样才能消除呢?

解决方案 »

  1.   

    如果你只要选中的变色,可以这样
      if State =[ gdSelected] then
          DBGrid1.Color:=clred
          else
            DBGrid1.Color:=clwhite;
      

  2.   

    我跟踪过程序,主要是点击滚动条后,DBGrid没有执行Repaint动作。当把程序最小化再最大化后,就只有当前记录,也就是第4条上有颜色,第3条上也正常显示了。
      

  3.   

    那就在你的dataset的afterscroll中重画DBGrid(试试Refresh/repaint或update)
      

  4.   

    如果在afterscroll事件中重画都不能解决问题,我没法了,事实上,我很少用dbgrid,建议你用eblib的dbgrideh试试(功能强大的第三方控件,我一直用它)