如何改变dbGrid每行的颜色。 (10分)

  • 主题发起人 主题发起人 青云
  • 开始时间 开始时间

青云

Unregistered / Unconfirmed
GUEST, unregistred user!

我有一个简单的问题。相信不少朋友都会。
那就是在dbGrid里,我让奇数行为一种颜色,让偶数行再显示另一种颜色,
这个技巧我以前看过,现在忘了。
下面是我找到的相关代码:
那位朋友有兴趣的帮我调试一下。

-------------------
procedure TClientForm.MemberGridDrawColumnCell( Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var oldcolor:tcolor;
oldpm:tpenmode;
begin
 if DM.ProjectTEAM_LEADER.Value = DM.Emp_ProjEMP_NO.Value then
{设定变色的行的条件}
MemberGrid.Canvas.Font.Style := [fsBold];
MemberGrid.DefaultDrawColumnCell
(Rect, DataCol, Column, State); {上面是演示程序的原内容,以下是增加部分}
if DM.ProjectTEAM_LEADER.Value
= DM.Emp_ProjEMP_NO.Value then {设定变色的行的条件}
begin
oldpm:= MemberGrid.Canvas.pen.mode;
oldcolor:= MemberGrid.Canvas.Brush.color;
MemberGrid.Canvas.Brush.color:=clyellow;
MemberGrid.Canvas.pen.mode:=pmmask;
MemberGrid.DefaultDrawColumnCell (Rect,
DataCol, Column, State);
MemberGrid.Canvas.Brush.color:=oldcolor;
MemberGrid.Canvas.pen.mode:=oldpm;
end;
end;
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (DBGrid1.DataSource.DataSet.RecNo mod 2)=0 then
begin
DBGrid1.Canvas.Brush.color:=clyellow; //偶数行显示黄色
DBGrid1.Canvas.pen.mode:=pmmask;
DBGrid1.DefaultDrawColumnCell (Rect,DataCol, Column, State);
end
else
begin
DBGrid1.Canvas.Brush.color:=clRed; //奇数行显示红色
DBGrid1.Canvas.pen.mode:=pmmask;
DBGrid1.DefaultDrawColumnCell (Rect,DataCol, Column, State);
end;
end;
 
谢谢,blackbook朋友,感谢您得帮助。
 
后退
顶部