Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   control sobre DBEDit (https://www.clubdelphi.com/foros/showthread.php?t=9652)

PTW 28-04-2004 18:18:39

control sobre DBEDit
 
Tengo un componente DBEdit asociado al campo de una tabla. Este campo es un campo de tipo monetario. Cuando pulso un boton "Modificar" del formulario, puedo modificar el contenido de dicho campo

El problema ocurre cuando al introducir datos en el DBEdit, escribo una cantidad monetaria incorrecta (por ejemplo: 212,2,,2).

En el evento OnExit del DBEDit habia intentado controlar que me mostrara un mensaje de error si se introducia una cantidad en un formato incorrecto, pero no llega a ejecutarse dicho codigo (este codigo lo he utilizado en componentes Edit, y funciona correctamente, pero en el DBEdit no).

¿Como lo hago?

Muchas gracias

delphi.com.ar 28-04-2004 18:20:50

Se trata realmente de un campo del tipo TFloatField????

PTW 28-04-2004 18:36:13

No he entendido tu pregunta.

Es una tabla Access con un campo "precio" que es de tipo Moneda,y el DBEdit esta asociado a ese campo. Y es un campo que almacena valores en forma de Euro (ejemplo: 25,20, 3,23,......) osea con "," com oseparador decirmal y 2 numeros decimales

PTW 28-04-2004 18:38:50

y el problema no es por utilizar "," en vez de ".". Se produce cuando intentas introducir una cantidad monetaria con mas de una coma (ej: 2,2,33)


GRacias

roman 28-04-2004 19:14:18

Cita:

Empezado por PTW
el evento OnExit del DBEDit habia intentado controlar que me mostrara un mensaje de error si se introducia una cantidad en un formato incorrecto, pero no llega a ejecutarse dicho codigo

No estoy muy seguro de lo que voy a decir pero pienso que la validación del formato del campo se hace antes de llegar al evento OnExit, de manera que podrías agregar el campo como persitente y usar su evento OnValidate.

// Saludos

jachguate 28-04-2004 20:32:08

Es que el evento OnValidate se disparará solamente si el usuario ha introducido un valor que si es un número de coma flotante, pues el OnValidate no se encarga de "validar" cuestiones sintácticas.

Pienso que en el Evento OnSetText podrias capturar el error... pero hay que probar.

Bastará algo como:

Código Delphi [-]
Procedure Table1Campo1SetText(sender : TField; const Text: string);

Begin
  try
    sender.Value := StrToFloat(Text);
  except
    on EConvertError do
    Begin
      ShowMessage('Valor inválido!');
    End;
  end;
End;

hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 05:46:26.

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