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

Posted

技术标签:

【中文标题】在 Delphi 中,如何更改 TDBGrid 中网格线的颜色?【英文标题】:In Delphi, How can I change the color of grid lines in a TDBGrid? 【发布时间】:2018-12-30 22:01:45 【问题描述】:

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

那么,谁能告诉我们如何改变网格线的颜色?

我的意思是:如何改变单元格边框的颜色(见下图)

单元格边框

【问题讨论】:

您是指单元格边框吗?字体颜色?背景颜色? 请发布您的代码并编辑您的问题,以便更具体地了解您到底想做什么。 JohnEasley,看图可以帮助你理解我的问题 为什么投反对票? “网格线的颜色”的表达非常清楚 @MartynA Delphi 本身说网格线的意思是这里的意思,而行是……好行。例如。财产grid line width。所以我想人们可以假设“官方”术语是默认的,至少在投票之前 【参考方案1】:

你在找吗

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;

结果会是这样的:

更好的方法(来自Tom Brunberg 评论)是使用FrameRect() as

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;

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

【讨论】:

而不是两次FillRect() 我更喜欢FrameRect()Polygon()

以上是关于在 Delphi 中,如何更改 TDBGrid 中网格线的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

delphi中的TDBGrid的问题

Delphi XE2 中 TTable 和 TDBGrid 的意外行为

How to create a OnCellDblClick for Delphi's TDBGrid

delphi TDbGrid 右键 PopupMenu 菜单只在有数据的地方弹出

利用书签功能对TDBGrid控件中多个记录的处理

如何使用 TDBGrid 中的复选框来选择多条记录?