着急,问一个DBGrid的重画问题。

bjzlz 2005-12-09 07:15:49
现在有一个DBGrid,因为使用DrawColumnCell事件重绘了当前记录行的颜色,使焦点离开DBGrid后还能显示那一行记录。

现在的问题是,当记录比较多,当前比如显示在第3条记录,滚动滚动条后,点击第4条记录,现在就是第3和第4行都有指定颜色的背景,怎样才能消除呢?
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bjzlz 2005-12-13
  • 打赏
  • 举报
回复
好像也只能这样了,不过有点闪烁,用了双显存也不管用。

bjzlz 2005-12-09
  • 打赏
  • 举报
回复
谢谢你了,我再多想想。
柯本 2005-12-09
  • 打赏
  • 举报
回复
如果在afterscroll事件中重画都不能解决问题,我没法了,事实上,我很少用dbgrid,建议你用eblib的dbgrideh试试(功能强大的第三方控件,我一直用它)
bjzlz 2005-12-09
  • 打赏
  • 举报
回复
试了,不管用。
柯本 2005-12-09
  • 打赏
  • 举报
回复
那就在你的dataset的afterscroll中重画DBGrid(试试Refresh/repaint或update)
bjzlz 2005-12-09
  • 打赏
  • 举报
回复
我跟踪过程序,主要是点击滚动条后,DBGrid没有执行Repaint动作。当把程序最小化再最大化后,就只有当前记录,也就是第4条上有颜色,第3条上也正常显示了。
柯本 2005-12-09
  • 打赏
  • 举报
回复
如果你只要选中的变色,可以这样
if State =[ gdSelected] then
DBGrid1.Color:=clred
else
DBGrid1.Color:=clwhite;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧