如何使用 TDBGrid 绘制一个空单元格?

How to draw an empty cell using TDBGrid?

我正在尝试为 TDBGrid 的单元格显示空文本,而不更改字段的值和单元格的背景色。 我不确定这是正确的方法,但我尝试使用 OnDrawDataCell 事件如下:

procedure TMyForm.MyGridDrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
var
    Grid : TDBGrid;
begin
  inherited;
  if(Field.FieldName = 'MYFIELD') then
  begin
    Grid := Sender as TDBGrid;
    Grid.Canvas.FillRect(Rect);
  end;
end;

在事件中放置断点后,我注意到它从未执行过

已使用 OnDrawColumnCell 事件处理程序而不是过时的 OnDrawDataCell

解决

正如documentation所说:

Do not write an OnDrawDataCell event handler. OnDrawDataCell is obsolete and included for backward compatibility. Instead, write an OnDrawColumnCell event handler.