Jose,
Habrá que pensarse algo para que no se borre el contenido de una fecha mal introducida por error en un MaskEdit de valor Fecha.
He probado los dos OnExit que me has propuesto, pero en los dos no me funcionan.
Los Usuarios de aplicaciones, no "entienden" los cambios a "peor", o sea... que si antes cuando se equivocaban en una fecha "veian" cuál era el error introducido por el usuario, ahora, simplemente desaparece el valor introducido, sin dar opción de "visualizar" el error cometido por el usuario.
El TDatePicker, no me sirve para ese tipo de "Gets" de fecha... no es práctico de utilizar por un usuario que está acostumbrado a aplicaciones de teclado y no de ratón, y además... Intenta de introducir en una fecha TDatePicker de value 02/07/2005 le cambias el día a 37... y verás que no se queja... e introduce en la fecha 7 y te valida 7/7/2005...cuando lo lógico sería que el "Get" de fecha se quejara al introducir un día/mes/año por error.
Un Saludo,
Xevi.
"Jose F. Gimenez" <
jfgimenez@wanadoo.es> escribió en el mensaje news:42c8f3e5$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
Xevi,
Bien, pero... ¿y lo de validación de fecha??? no quiero que salga del Edit con una fecha no válida...
Si el valor que asignas al TMaskEdit es una fecha, no te dejará introducir una fecha erronea. Si el usuario intenta introducirla, el control la borrará.
Ahora bien, si lo que quieres es forzar al usuario a escribir siempre una fecha válida y no dejarla en blanco, tienes dos opciones: usar un TDatePicker o validarla así:
::oMaskEdit1:OnExit := {| oSender | !Empty( oSender:Value ) }
Pierde el valor de la fecha introducida, y me la deja en blanco...
Lo que pretendo es que cuando se introduzca una fecha no válida, me vuelva a preguntar la fecha, pero eso si, mostrándome la fecha que me da error,... para verificarla, claro.
Como te he dicho, cuando la fecha introducida es incorrecta, siempre se borra. Si no quieres que se borre, lo único que se me ocurre es que asignes una cadena, en vez de una fecha:
::oMaskEdit1:Value := DTOC( Date() )
y después la validas así:
::oMaskEdit1:OnExit := {| oSender | Day( CTOD( oSender:Value ) ) > 0 }
Por supuesto, siempre tendrás que convertir el valor del maskedit a fecha cuando lo necesites, usando CTOD()
--
Un saludo,
José F. Giménez
--