El DBGrid va a pintar exactamente lo que tú le digas. Si el color no cambia es entonces porque UpdateStatus sigue siendo distinto de usUnmodified después de cancelar o modificar. De ser esto tendrás que encontrar otra forma de controlar cuándo va de amarillo.
O bien, aunque no me suena del todo, pon explícitamente el color del canvas en blanco en el
else:
Código Delphi
[-]
if MyQuery1.UpdateStatus <> usUnmodified then
begin
TCRDBGrid(Sender).Canvas.Brush.Color:= clYellow;
button3.Enabled:=True;
end
else
begin
TCRDBGrid(Sender).Canvas.Brush.Color:= clWhite;
end;
// Saludos