让DBGrid控件能够隔行上色

本文介绍如何让Delphi的DBGrid控件实现隔行变色的效果,并改变选中行的颜色。主要通过禁用默认绘制、启用行选择选项及自定义绘制单元格代码来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

让Delphi的DBGrid控件能够在显示的时候可以用不同的颜色区分相邻的记录行,实现办法:
 (1)把DBGrid的DefaultDriawing属性设为False;
 (2)把DBGrid的Option—>dgRowSelect属性设为True,可以实现选中行行变色;设为False选中单元格变色;
 (3)使用如下代码实现:
procedure TExample.DBGrid1DrawColumnCell(Sender: TObject;  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);     {在表格的DrawColumnCell事件中实现 }
var
   iColumn:Integer;  {列循环控制}
   iRect:Integer;  {行循环控制}
begin
  if Odd((Sender as TDBGrid).DataSource.DataSet.RecNo + 1) then     {隔行变色实现}
  begin
    (Sender as TDBGrid).Canvas.Brush.Color := $00FEC8FF;
    (Sender as TDBGrid).Canvas.Font.Color := clBlack;
  end;
  if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then   {设置当前所选单元格颜色}
   begin
    (Sender as TDBGrid).Canvas.Brush.Color := clSkyBlue;
    (Sender as TDBGrid).Canvas.Font.Color := clBlack;
  end;
  with (Sender as TDBGrid).Canvas do  {重画Cell(单元格)的边框}
  begin
    Pen.Color := clSilver;   {画笔的颜色}
    MoveTo(Rect.Right, Rect.Top);   {定位画笔}
    LineTo(Rect.Right, Rect.Bottom);    {画竖线}
    Pen.Color := clActiveCaption;    {画笔的颜色}
    MoveTo(Rect.Left, Rect.Bottom);   {定位画笔}
    LineTo(Rect.Right, Rect.Bottom);    {画横线}
 (Sender as TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State); {生效}
end;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值