Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-05-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 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
  #2  
Antiguo 19-05-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola georgejg, para capturar el mensaje de error, puedes hacer lo siguiente en el evento OnSetText de tu campo.

Código Delphi [-]
procedure TForm1.ADOQuery1campoSetText(Sender: TField;
  const Text: String);
begin
 try
  sender.AsFloat:= StrtoFloat(text);
 except
  raise EDatabaseError.Create('Formato incorrecto');
 end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 19-05-2008
Avatar de georgejg
georgejg georgejg is offline
Miembro
 
Registrado: ene 2008
Ubicación: Colombia
Posts: 37
Poder: 0
georgejg Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola georgejg, para capturar el mensaje de error, puedes hacer lo siguiente en el evento OnSetText de tu campo.

Código Delphi [-]
procedure TForm1.ADOQuery1campoSetText(Sender: TField;
  const Text: String);
begin
 try
  sender.AsFloat:= StrtoFloat(text);
 except
  raise EDatabaseError.Create('Formato incorrecto');
 end;
end;

Saluditos
Excelente respuesta Caro funciona perfectamente..


Muchas gracias por contestar..

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Solo dos Decimales odrack Varios 5 05-05-2008 22:00:24
Ingresar para solo consultar hecospina Varios 9 23-02-2008 18:54:50
permitir solo dos decimales jonmendi OOP 3 12-01-2007 16:30:35
mostrar solo dos decimales clanmilano Varios 1 15-11-2005 23:31:52
Ingresar sólo decimales en un Edit noeres Varios 10 06-12-2004 00:32:11


La franja horaria es GMT +2. Ahora son las 09:30:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi