我正在尝试为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所说:


不要编写OnDrawDataCell事件处理程序。现“ OnDrawDataCell”为
已过时且包含在内,以实现向后兼容。而是写一个
OnDrawColumnCell事件处理程序。

08-05 07:17