Du solltest ein StateChange-Ereignis der mit dem Grid verknüpften Datenquelle abfragen, z.B:
Delphi-Quellcode:
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
if TDataSource(Sender).State <> dsEdit then
DBGrid1.Options := dbgrid1.Options - [dgediting];
end;