Como bien dice Caminante, cuando se edita in situ un campo en el DBGrid, en realidad se está haciendo en un "TEdit" (TDBGridInplaceEdit) sobrepuesto, por lo que todavía no está el contenido que estamos editando en el DBGrid.
Se podría hacer capturando el evento OnKeyPress de ese Edit sobrepuesto, pero también podemos hacer algo más sencillo ya que las pulsaciones que van destinadas a ese control también pasan por el
OnKeyPress del DBGrid. A ver si te sirve esta chapucilla como base:
Código Delphi
[-]procedure TForm1.DBGridKeyPress(Sender: TObject; var Key: Char);
var
texto: String;
begin
if (DBGrid.SelectedField.FieldName = 'CANTIDAD') then
begin
if (DBGrid.ControlCount > 0) then
begin
texto := TEdit(DBGrid.Controls[0]).Text;
if (Key = ',') AND (Pos(',', texto) > 0) then Key := #0;
end;
end;
end;