C++Builder 程序员博客
22 Aug
一表中有字段A和B
如果A和B的值不同就变色
请问该怎样做,谢谢
if (ClientDataSet1A->Value!=ClientDataSet1B->Value)
DBGridEh1->Canvas->Brush->Color=clAqua;
DBGridEh1->DefaultDrawDataCell(Rect,Column->Field,State);
谢谢楼上,
但不用DBGRIDEH1只用DBFRID有没有办法实现
2楼的做法同样可以用于DBGrid,
在DBGrid的OnDrawColumnCell事件中可以更改字体和填色。
void __fastcall TForm1::DBGridDrawColumnCell(
TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if(A字段值==B字段值)
{
DBGrid->Canvas->Brush->Color=clAqua;
}
DBGrid->DefaultDrawColumnCell(Rect,DataCol, Column, State);
}
DataSet的DisableControls();方法可以临时禁止相关的数据展现控件(比如DBGrid)刷新,对应的反方法则是EnableControls();
一般在对数据集做某些更新时不期望过程中数据展现控件不停的刷新,可以如下写法:
DataSet->DisableControls();
//此时对DataSet进行更新或者浏览等操作
DataSet->EnableControls();
谢谢,第二个问题解决了.
第一个问题的 if(A字段值==B字段值)
该用什么格式 直接打字段名字报错
谢谢
if(DBGrid->DataSource->DataSet->FieldByName("A字段名")->AsString!=DBGrid->DataSource->DataSet->FieldByName("B字段名")->AsString)
弄好了, 太感谢了.