5

我有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; 

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

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

从客户中选择 *

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

4

0 回答 0