调用 OnDrawColumnCell 过程 Delphi DBGrid

Tur*_*254 5 delphi ado dbgrid tdbgrid tadoquery

我有DBGrid哪些存储客户信息和会员资格的到期日期。我对包含即将到期(青色)或已过期(红色)的会员资格的行着色的OnDrawColumnCell事件使用以下代码DBGrid

procedure TfrmMain.grdMainDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if (ADOMember.FieldByName('expirydate').AsDateTime >= (now)) and (ADOMember.FieldByName('expirydate').AsDateTime <= (now+7)) then
  begin
    grdMain.Canvas.Brush.Color := clTeal;
    grdMain.Canvas.Font.Color := clWhite;
    grdMain.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
  if (ADOMember.FieldByName('expirydate').AsDateTime < (now)) and (ADOMember.FieldByName('expirydate').AsString <> '') then
  begin
    grdMain.Canvas.Brush.Color := clRed;
    grdMain.Canvas.Font.Color := clWhite;
    grdMain.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end; 
Run Code Online (Sandbox Code Playgroud)

我的表单上还有一个按钮可以重置 DBGrid。这允许用户在搜索完成后显示完整的客户端列表(返回少量客户端)。

按下重置按钮时出现我的问题。当ResetMemberGrid显示完整列表时,该按钮会正确执行以下 SQL 函数(在称为 的过程中)。

SELECT * FROM 客户

但是,DBGrid 不再着色。所有行保持白色。我无法调用该grdMainDrawColumnCell过程,因为它需要我不知道的参数。有没有办法调用 DrawColumnCell 过程?我曾尝试重新绘制、使 DBGrid 失效和刷新,但没有成功。谢谢。