| « | January 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称: 日志总数:21 评论数量:94 留言数量:1 访问次数:145887 建立时间:2006年1月9日 |

| |
|
[C++ Builder]c++builder中,DBGrid的行颜色设置 软件技术
joinclear 发表于 2006/1/9 10:21:29 |
| 设一DBGrid已经和一DataSorce连接,且能显示某一表中的所有记录。
现我要让DBGrid中显示的记录,记录号为奇数时显示一种颜色,记录号为双数时又显示一种颜色。
方法是响应:DBGrid的消息:OnDrawColumnCell
程序如下:
void __fastcall T***::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State){ if(DBGrid1->DataSource->DataSet->RecNo % 2 == 0) { DBGrid1->Canvas->Font->Color = clWindowText; DBGrid1->Canvas->Brush->Color =clMoneyGreen; } else { DBGrid1->Canvas->Font->Color = clWindowText; DBGrid1->Canvas->Brush->Color = clCream; } DBGrid1->DefaultDrawColumnCell(Rect,DataCol,Column,State);}
这时DBGrid显示了颜色,但这时当我选中某一行记录时,没有我以前(option\dgRowSelect=true)选中时的颜色效果了,就是说我这时选中了哪一行,没有颜色提示了。
故下面的程序代码,我又加入这个选中行有颜色标识的提示。而且颜色是可以任意变的。
改后的程序如下:void __fastcall TfmDrvVeh::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State){ if(DBGrid1->DataSource->DataSet->RecNo % 2 == 0) { DBGrid1->Canvas->Font->Color = clWindowText; DBGrid1->Canvas->Brush->Color =clMoneyGreen; } else { DBGrid1->Canvas->Font->Color = clWindowText; DBGrid1->Canvas->Brush->Color = clCream; } DBGrid1->DefaultDrawColumnCell(Rect,DataCol,Column,State);
if(State.Contains(gdSelected)||(State.Contains(gdSelected)&&State.Contains(gdFocused))) { DBGrid1->Canvas->Font->Color = clWindowText; DBGrid1->Canvas->Brush->Color =TColor RGB(157,167,253); DBGrid1->DefaultDrawColumnCell(Rect,DataCol,Column,State); }} |
|
|
回复:c++builder中,DBGrid的行颜色设置 软件技术
barry(游客)发表评论于2006/1/30 21:51:13 |
|
» 1 »
|