Sí, tienes razón, tu planteamiento es del todo correcto.
Pues, como te dije, supongo que en el evento OnExecute miras si ActiveControl es el DBGrid:
Código Delphi
[-]
procedure TForm1.Action1Execute(Sender: TObject);
begin
if ActiveControl = DBGrid1 then
end;
// Saludos