Yo por lo general para realizar esas acciones utilizo el evento del TDatasource, onStateChange;
Código Delphi
[-]
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
Button1.Enabled:=Datasource1.State in [dsEdit,dsInsert];
Button2.Enabled:=(DataSource1.State=dsEdit);
Edit1.Enabled := (DataSource1.State = dsBrowse);
end;
Saludos...