求助关于dbgrid的自画功能
现在dbgrid显示一个结果集表A,现在有一个表B。要求:如果表A中某条数据在表B中未出现,则把表A的这一行颜色弄成红色。不知道怎么实现,大家可要帮帮我呀。
[解决办法]
筛选表A的记录时,虚拟一个字段,作为是否存在于表B的标志,然后在DBGrid的自画事件中,判断这个虚拟字段的值,赋一个不同的颜色就行了。
[解决办法]
A结果集中增加一个字段flag,1表示出现,0表示未出现
然后重载DBGrid的DrawColumnCell事件
void __fastcall TFrmMain::myDBGridEh1DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumnEh *Column,
Gridseh::TGridDrawState State)
{
//改变颜色
if( Query1->FieldByName("flag")->AsInteger==1 )
{
((TDBGrid*)Sender)->Canvas->Brush->Color = clRed;
}
((TDBGridEh*)Sender)->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}