说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

为什么dbgrid的网格颜色属性的更改不是每次都可以。

编辑:说三道四文库 发布时间:2018-05-25 11:36
HTML文档下载 WORD文档下载 PDF文档下载
c++ builder 5中编译一个dbgrid网格颜色属性更改的程序。代码如下
  if (Table1->FieldByName("Size")->AsFloat > 10)
    DBGrid1->Canvas->Font->Color = clRed;
  DBGrid1->DefaultDrawDataCell(Rect, Field, State);

为什么不是每次编译都会有更改颜色的效果。如果修改了其他控件或其他代码。有时
即使是恢复原状。DBGrid颜色也不会改变。why?

在你的程序中该部分设置断点,看看
if (Table1->FieldByName("Size")->AsFloat > 10)
{    
    DBGrid1->Canvas->Font->Color = clRed;
}
是不是按你想象中的那样总被触发。还有就是“如果修改了其他控件或其他代码。有时
即使是恢复原状。DBGrid颜色也不会改变。”我不明白你的意思,DBGrid中的DrawDatCell()什么时候被触发,跟其他控件的代码被修改,有什么关系吗?
if (Table1->FieldByName("Size")->AsFloat > 10)
{
    DBGrid1->Canvas->Font->Color = clRed;
  DBGrid1->DefaultDrawDataCell(Rect, Field, State);
}
换一换Draw的事件看效果如何。
http://www.csdn.net/cnshare/soft/11/11463.shtm
用 Label1->caption="aaa";测试发觉onDrawDatCell竟然有时候不会被触发。真是奇怪。
在这个事件中试试看:DefaultDrawColumnCell

http://www.csdn.net/cnshare/soft/11/11463.shtm
DefaultDrawColumnCell每次编译都有反应
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘