Hola
Para no dejar escribir una e
evento on keypress del grid
if key='e' then key:=#0;
yo para canviar el separador decimal el punto por la coma
if key='.' then key:=',';
Para que salte en un grid al presionar un digito de mas
mirate el ejemplo evento onkeyup del dbgrid donde
DBGAssentament es el dbgrid
assentamentdeure,assentamenthaber son fields del dataset assentament
n_digits es el numero de digitos maximos
El ejemplo me funciona en mi aplicación
Código Delphi
[-]
procedure TFDades_Assentament.DBGAssentamentKeyUp(Sender: TObject;var Key: Word; Shift: TShiftState);
Var
B: integer;
texte:string;
begin
if ((DBGAssentament.SelectedField=assentamentdeure) or (DBGAssentament.SelectedField=assentamenthaber))
AND (key<>VK_LEFT) AND (key<>VK_RIGHT) AND (key<>VK_UP) AND (key<>VK_DOWN) AND (KEY<>0)
then begin
for B := 0 to (DBGAssentament.ControlCount - 1) do begin
if DBGAssentament.Controls[b] is TInPlaceEdit then begin
with DBGAssentament.Controls[b] as TInPlaceEdit do begin
texte := Text;
end;
end;
if length(texte)>=n_digits then
DBGAssentament.SelectedIndex:=DBGAssentament.SelectedIndex+1;
end;
end;
end;