在Delphi中,如何更改TDBGrid中网格线的颜色?

You*_*ush 4 delphi colors dbgrid

我在Delphi应用程序中使用TDBGrid组件,当我更改行颜色时,网格线变得不清楚或几乎不可见.

那么,任何人都可以告诉我们如何改变网格线的颜色吗?

我的意思是:如何改变细胞边界的颜色(见下图)

细胞边界

Sam*_*ami 7

你在找吗?

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const [Ref] Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
  R: TRect;
begin
  R:= Rect;
  with DBGrid1.Canvas do
    begin
      Brush.Color:= clRed;
      R.Offset(Column.Width, 0);
      FillRect(R);
      R:= System.Types.Rect(Rect.Left, Rect.Bottom - 1, Rect.Right, Rect.Bottom);
      FillRect(R);
    end;
end;
Run Code Online (Sandbox Code Playgroud)

结果如下:

一个更好的方法(来自Tom Brunberg评论)是FrameRect()用作

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const [Ref] Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with DBGrid1.Canvas do
    begin
      Brush.Color:= clRed;
      FrameRect(Rect);
    end;
end;
Run Code Online (Sandbox Code Playgroud)

使用FrameRect()在矩形区域周围绘制1像素宽的边框,该区域不会使用"笔刷"图案填充矩形的内部.要使用Pen绘制边界,请使用Polygon方法

  • 而不是两次“FillRect()”,我更喜欢“FrameRect()”或“Polygon()” (2认同)