Ver Mensaje Individual
  #8  
Antiguo 18-07-2017
Avatar de _Leo
_Leo _Leo is offline
Miembro
 
Registrado: ene 2017
Ubicación: Lanzarote (Islas Canarias)
Posts: 38
Reputación: 0
_Leo Va camino a la fama
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
    // Comprobamos que existe algún control "inplace" en el DBGrid
    if (DBGrid.ControlCount > 0) then
    begin
      // Obtenemos el texto del TDBGridInplaceEdit
      texto := TEdit(DBGrid.Controls[0]).Text;
      // ...
      // Como ejemplo, si ya existe una coma en "texto" no permitimos otra
      if (Key = ',') AND (Pos(',', texto) > 0) then Key := #0;
    end;
  end;
end;
Responder Con Cita