Ver Mensaje Individual
  #1  
Antiguo 19-05-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Reputación: 0
georgejg Va por buen camino
Ingresar solo Dos decimales en DBGrid

hola a todos..

tengo la siguiente inquietud es posible controlar el ingreso de solo dos Decimales en un DBGrid???

o controlar q solo se ingrese un punto en el DBgrid

les cuenta la historia..
primero realizo el ingreso de un nuevo registro usando los Edit con el siguiente codigo puedo controlar q al ingresar el punto solo permita ingresar dos decimales:

Código Delphi [-]
 
procedure TUnit_Main.Edit21KeyPress(Sender: TObject; var Key: Char);
Var i: Integer;
    pos: Cardinal;
begin
   i:=0;
//Permite que desepues de se digite el . solo se puedan ingresar 2 Registros Mas
  if ( StrScan('0123456789.'+chr(7)+chr(8), Key) = nil ) then  Key := #0;
 // cambia el punto decimal por coma
  if key = '.' then key := '.';
  //controlar entrada una sola coma
  for i := 1 to length(Edit1.Text) do
    if ( copy(Edit1.Text,i,1) = '.' ) and not ( StrScan('.', Key) = nil ) then  Key := #0;
 
 with Sender as TEdit do
  begin
   pos := System.Pos('.', Text);
   if not LongBool(Pos) then Dec(Pos);
   ReadOnly := not (Key in ['0'..'9', '.', #8]) or
               (Pos <> $FFFFFFFF) and (Key = '.') or
               ((Key <> #8) and (Pos < (SelStart - 1)));
  end;

funciona a la perfeccion..

entonces guardo lo registros y luego si quiero modificarlos utilizo un Dbgrid (conectado a un DataSource y este a un Query)
que me trae los datos.

el problema radica en q si yo al modificar el dato ingreso por ejemplo 23.22.33 el grid muestra "23.22.33" is not a valid floating point value for field "COLUMNA1"

no se si se puede ya sea capturar el error y mostrarlo de otra manera.

o validar el grid para que prohiba el ingreso de mas de un . (punto) en la celda.

Responder Con Cita