Cita:
Empezado por _Leo
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;
|
Lo he probado de esta manera y no funciona correctamente, me explico la primera vez digito 2 y la variable texto = '', luego de digitar 2 digito 1 osea 21, ahi si cuando entra a esta validación me aparece el 2, y si escribo otro número más ahi si me aparece el 1, y lo que necesito es que a medida que vaya digitando la variable texto valga lo mismo que escribí en la celda.
Es un buen indicio la manera en que lo planteas pero aún falta esa cosa y quedaría como lo necesito.
Muchas gracias.