如何在delphi中绘制TDBGrid单元格的渐变颜色背景

问题描述 投票:0回答:1

我的目标是绘制一个Delphi

TDBgrid
单元格,使其具有从右到左的渐变颜色,如下图所示:

image

我使用了

GradientFillCanvas
装置中的
Vcl.GraphUtil
程序。

这是我的自定义

OnDrawColumnCell
事件处理程序:

procedure TMainForm.MyDBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  i : integer;
begin
  if DM1.ABST_DV.RecNo mod 2=1 then
  begin
    GradientFillCanvas(MyDBGrid.Canvas, 
      clWhite,clGradientInactiveCaption,Rect, `gdHorizontal);

    MyDBGrid.Canvas.Font.Color:=clBlack;
  end else
  begin
    GradientFillCanvas(MyDBGrid.Canvas, 
      clWhite,clGradientInactiveCaption, Rect, gdHorizontal);
    MyDBGrid.Canvas.Font.Color:=clBlack;
  end;
end;

问题是,在

OnDrawColumnCell
事件中使用这段代码,
TDBGrid
的内容不会出现。

delphi drawing gradient dbgrid
1个回答
0
投票

内容没有出现,因为您没有绘制它。 您需要在绘制背景后绘制单元格的文本。 您可以使用

MyDBGrid.Canvas.TextRect()
方法来实现此目的。

TDBGrid
确实有一个
DefaultDrawDataCell()
方法,它绘制单元格及其文本,并且可以使用
OnDrawColumnCell
事件进行自定义,但它只支持绘制纯色背景,因此它将在您的自定义背景上绘制。 不过,您可以尝试使用透明的
Brush
来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.