FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Controlar edición de DBEdit
Hola a todos, estoy creando una app con C++ Builder y tengo un formulario que obtiene información de una BD de MySql mediante algunos DBEdit, muestra un campo de tipo flotante con 2 decimales, mi duda es........cómo controlo de manera manual que el usuario ingrese un flotante válido en ese DBEdit? Me explico, ya restringí mediante evento OnKeyPress, que el usuario sólo ingrese números y el punto decimal, pero al ingresa por ejemplo: 4.50.2 es el sistema que me arroja el mensaje de error (en inglés), lo que quiero es manejar de manera manual ese mensaje de error para mostrar un texto que yo desee, si no me equivoco, el término correcto sería "validar" manualmente ese dato editado. Gracias
|
#2
|
||||
|
||||
Yo creo que lo más sencillo es que no intentes controlar los errores en la entrada del usurio, sino que esperes a que la Base de Datos te devuelva el error, lo captures y lo muestres.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Cita:
Adjunto una captura, al momento de editar el Precio de compra y querer pasar al sgte, me salta ese error, q claro, es lo correcto, pero un usuario q no sepa inglés no va a entender el mensaje de error. |
#4
|
||||
|
||||
Al ser un DBEdit, estará asociado a un dataset y en este se puede realizar la validación que buscas en el evento OnValidate del campo "precioc_prod".
Si no tienes persistentes los campos en el dataset, sería agregarlos en tiempo de diseño. Y esto te daría la opción de establecer el código de ese evento.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#5
|
||||
|
||||
Hola.
Una opción es interceptar el evento OnSetText del campo asociado que se dispara cada vez que se recibe un nuevo valor pero antes de ser asignado. Por ejemplo, si el campo asociado al DBEdit se llamase "Numero":
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#6
|
|||
|
|||
Traté con tu código, en lo que equivaldría a c++ builder, pero me arroja error en la línea donde creas la excepción, que creo q eso es lo que necesito, de casualidad no sabes el código para el C builder? O qué es lo que estaría haciendo mal yo?
Código:
void __fastcall Tdmquerys::qdetdetallespreciov_prodSetText(TField *Sender, const UnicodeString Text) { Extended e; if(!(TryStrToFloat(fdetprod->dbedetpc->Text, e))){ //La excepción raise Exception.Create( 'No es un número decimal válido' ); } } Gracias por responder |
#7
|
|||
|
|||
Cita:
A qué te refieres con campos "persistentes"? Investigando me topé con ese término, pero no encontré info.....entendible jeje |
#8
|
||||
|
||||
Hola.
No tengo C++ Builder en este momento pero intenta de este modo: Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
||||
|
||||
Hola de nuevo.
Y en tu código podes usar el parámetro Text directamente: Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#10
|
|||
|
|||
Cita:
Genio!!!! Si, me ha resultado, eso era lo que estaba necesitando, muchas gracias void __fastcall Tdmquerys::qdetdetallesprecioc_prodSetText(TField *Sender, const UnicodeString Text) Código:
{ Extended e; if(!(TryStrToFloat(fdetprod->dbedetpc->Text, e))){ throw Exception( "No es un número decimal válido" ); } Gracias y saludos |
#11
|
|||
|
|||
Una duda más, que pasaría en el else? O cúal sería la sentencia que controla lo que pasa si es q la condición if ( !( TryStrToFloat( Text, e ) ) ) de resultado Falso? Es decir, cuál sería el código q indique que....."El dbeedit se llena normalmente"?
|
#12
|
||||
|
||||
Hola.
Si TryStrToFloat devuelve verdadero ( el numero es correcto ) continúa con el flujo del programa, en caso contrario lanza la excepción. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#13
|
|||
|
|||
Eso creí, pero, mi pregunta iba porque lanza la excepción correctamente, pero ahora, al colocar un valor correcto, el DBEdit vuelve al valor que tenía de inicio, es como si se refrescara y no queda el valor q edité (ReadOnly está en False, por si acaso )
|
#14
|
||||
|
||||
Hola.
Ahora te entiendo, no tengo como probarlo pero creo que sería: Código PHP:
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#15
|
|||
|
|||
Cita:
Exacto! Eso era lo q faltaba, ahora si funciona todo correctamente, mil gracias! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
asignar contenido de un DBedit a otro DBedit | Richardn | Varios | 4 | 29-11-2012 17:06:03 |
Edición de IP | FerCastro | Varios | 2 | 10-03-2007 00:46:59 |
Edición de un DBGRID | luxus | Conexión con bases de datos | 1 | 13-02-2007 11:34:26 |
Como puedo cambiar la propiedad de edicion y no edicion a un StringGrid1 | ctronx | Varios | 2 | 25-06-2004 23:10:19 |
|