我有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,但没有成功。谢谢。