如何为DBGrid的行设置交替颜色?

netrobo 2003-04-10 07:14:48
?
...全文
18 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
swayi21 2003-04-10
  • 打赏
  • 举报
回复
DrawColumnCell();
begin

if gdSelected in State then
Exit;
if Table1.RecNo mod 2 = 0 then
DBGrid1.Canvas.Brush.Color := clInfoBk
else
DBGrid1.Canvas.Brush.Color := RGB(191, 255, 223);
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

DBGrid1.Canvas.Pen.Color := $00C08000;
DBGrid1.Canvas.MoveTo(Rect.Left, Rect.Bottom);
DBGrid1.Canvas.LineTo(Rect.Right, Rect.Bottom);

DBGrid1.Canvas.MoveTo(Rect.Right, Rect.Top);
DBGrid1.Canvas.LineTo(Rect.Right, Rect.Bottom);

end;
netrobo 2003-04-10
  • 打赏
  • 举报
回复
用以上方法能解决将RowSelect设为True出现的选择行无颜色的问题吗?
wingbroken 2003-04-10
  • 打赏
  • 举报
回复
{//显示斑马线
procedure TClientInfoForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
inherited;
with DBGrid1 do
begin
if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
Canvas.Font.Color :=ClYellow;
Canvas.Brush.Color :=ClNavy;
end
else
begin
if DataSource1.DataSet.RecNo mod 2< >0 then //判断当前数据是奇数还是偶数行
Canvas.brush.Color :=ClWhite //如果是奇数行,DBGrid背景以白色显示
else
Canvas.brush.Color :=$00EAEAEA; 如果是偶数行,DBGrid背景以浅灰色显示
end;
DefaultDrawColumnCell(Rect, DataCol, Column, State); 这行很关键的,一定不要遗漏了
end;

end;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧