PDA

Ver la Versión Completa : Asignar máscara y valor por defecto en un Field


Minotaure
20-11-2007, 13:50:02
Hola,

Tengo un campo dónde guardo la hora (con el formato 00:00). Ahora mismo edito este campo des de un grid (concretamente un TwwDBGrid) y tengo cómo máscara (mask) de la columna #[#]:#[#].

Lo que quiero es conservar esta máscara (que funciona bien) pero que por defecto los minutos te salgan a :00 pero que el usuario pueda cambiarlos.
He probado con #[#]:00 pero lo que hace es poner 00 en los minutos pero no deja poner ningún valor más. Esto es en las propiedades del campo del grid. He visto que en el TstringField también hay la propiedad EditMask pero tampoco se cómo hacer lo que he dicho anteriormente. He probado de poner en DefaultExpression ':00' pero no hace nada.

Agradecería mucho cualquier ayuda.

Gracias.

enecumene
20-11-2007, 14:54:14
Hola, no se si has probado con esto, en el campo persistente hay una propiedad que se llama DisplayFormat ahi le pones la mascara de la siguiente forma:

hh:mm AM/PM // hora y minutos en formato de 12 horas
hh:mm // hora y minutos en formato 24 horas
hh:mm:ss AM/PM // hora, minutos y segundos en formato de 12 horas
hh:mm:ss // hora, minutos y segundos en formato de 24 horas

Espero que te ayude.

Saludos.

Minotaure
20-11-2007, 15:57:21
El formato ahora mismo ya me funciona bien. El problema que tengo es que no sé cómo conservar el formato y a la vez que me salgan los minutos a 0 por defecto (__:00) pero que el usuario puede modificarlos (si en la mascaro pongo el 00 me sale fijo, sin opción a modificar los valores.


Por cierto, gracias enecumene por el interés, de todos modos en el campo no me sale la propiedad DisplayFormat pero igualmente cómo he dicho no veo dónde poner un valor por defecto que se pueda modificar.

enecumene
20-11-2007, 16:04:09
Hola, por cierto donde estas aplicando la mascara? en la columna del dbgrid, en un maskedit o dentro de la base de datos?

Saludos.

marcoszorrilla
20-11-2007, 16:10:33
No sé que tipo de tablas estás utilizando, pero puedes mirar el evento OnNewRecord y hacer:

MiTablaCampo.Value:=Time - Time;

De esta manera aparecerá el campo con dicho valor.

Recuerda que la máscara 00 obliga a escribir ambos números, por ejemplo para escribir las siete de la mañana no sirve 7:00, habrá que escribir 07:00

Un Saludo.

Minotaure
20-11-2007, 17:04:53
Gracias marcoszorrilla, con lo del .value más o menos lo he solucionado.
Ahora hago MiTablaCampo.Value:= ':00' y por defecto sale esto.

El único problema es que ahora tienen que utilizar el ratón para seleccionar la posición, ya que si empiezan a teclear la hora se borra todo. De todas formas de momento lo dejaré así si el cliente no dice nada.

Por cierto, ¿para que sirve el campo DefaultExpression del Field?

marcoszorrilla
20-11-2007, 20:10:32
DefaultExpression, es el valor por defecto que va a tener el campo, pero sería importante que digas que motor y tablas utilizas para ver como utilizar dicha propiedad del campo en este caso concreto.


Un Saludo.

Minotaure
21-11-2007, 12:14:09
DefaultExpression, es el valor por defecto que va a tener el campo, pero sería importante que digas que motor y tablas utilizas para ver como utilizar dicha propiedad del campo en este caso concreto.


Un Saludo.

La motor base de datos que utilizo es Firebird 1.5, mi versión de Delphi es la 6 y los componentes que utilizo para acceder a datos son los FreeIB Components, en este caso concreto el FIBTableSet.

Muchas gracias por el interés mostrado en mi problema.