DBGrid中如何根据记录值,显示不同的颜色!
我在DBGrid中要根据一个字段记录值,如果大于0,为红色.小于0为黑色..如何设呀. 问题点数:0、回复次数:6Top
1 楼CCLIS(www.cclis.com)回复于 2003-12-02 21:05:40 得分 0
使用OnDrawCell
DBGridDrawCell(...)
{
TCanvas *Can = DBGrid->Canvas;
if(DataSet->FieldByName("a")->AsInteger > 0)
Can->Font->Color = clRed;
else
if(DataSet->FieldByName("a")->AsInteger < 0)
Can->Font->Color = clBlack;
else
// 这里处理等于0的情况
Can->TextOut(Rect.Left, Rect.Top, IntToStr(DataSet->FieldByName("a")->AsInteger))
}Top
2 楼fatwave(风中的雨)回复于 2003-12-03 11:07:03 得分 0
if(Column->Index == 4 && EleDBGridEh->DataSource->DataSet->Fields->Fields[4]->AsFloat > MaxDL )
{
EleDBGridEh->Canvas->Brush->Color = TColor(9671679);
}
if(Column->Index == 5 && EleDBGridEh->DataSource->DataSet->Fields->Fields[5]->AsFloat > MaxDL )
{
EleDBGridEh->Canvas->Brush->Color = TColor(9671679);
}
if(Column->Index == 6 && EleDBGridEh->DataSource->DataSet->Fields->Fields[6]->AsFloat > MaxDL )
{
EleDBGridEh->Canvas->Brush->Color = TColor(9671679);
}
if(Column->Index == 14 && EleDBGridEh->DataSource->DataSet->Fields->Fields[14]->AsFloat > MaxYggl )//第14列大于某值
{
EleDBGridEh->Canvas->Brush->Color = TColor(9671679);
}
if(State.Contains(gdSelected))//被选择时!
{
EleDBGridEh->Canvas->Brush->Color = (TColor)RGB(100,100,200);
EleDBGridEh->Canvas->Font->Color = clWhite;
}
EleDBGridEh->DefaultDrawColumnCell(Rect,DataCol,Column,State);
楼上说的是改字体颜色,我这是改底色,大同小异!
Top
3 楼darkinger(Ganger)回复于 2003-12-03 11:11:05 得分 0
唉呀,来晚了,不过接点分,哈哈Top
4 楼dclfoxman(foxmandcl)回复于 2003-12-03 19:59:59 得分 0
void __fastcall TFS_Fllow::DBViewCustomDrawCell(
TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
{
}
可我用不起来呀..因为我用的cxGrid控件呀.Top
5 楼constantine(飘遥的安吉儿)回复于 2003-12-03 20:56:10 得分 0
cxGrid是什么来的?没有看过,如果是DBGrid,上面就可以了。不满足就论坛里搜索,很多Top
6 楼laox5111(哥哥)回复于 2003-12-04 10:58:45 得分 0
cxGridDevExpress的Grid套件。我只用过老版本的。现在的版本功能越来越强大,但是也越来越复杂。所有已经不用了。
在cxGrid通过设置cxGridDBTableView跟DataSource相关联来显示数据,因此可以在cxGridDBTableView的CustomDrawCell事件里来控制。方法可以用上面所说的那些。Top




