Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Vaciar maskedit (https://www.clubdelphi.com/foros/showthread.php?t=68800)

pborges36 07-07-2010 21:01:32

Vaciar maskedit
 
Buenas. Quizas esta consulta sea un tanto simple, pero la verdad no encuentro como hacer esto.
Como se hace para permitir al usuario borrar el contenido de un maskedit? sin que salga el mansaje:

Invalid input value. Use escape key to abandon changes.

Por el momento solo pude agregar un tButton con el siguiente codigo:

Código Delphi [-]
maskedit1.Text:='';

La idea es que pueda cargar o no una fecha. En la propiedad editmask tiene lo siguiente: !99/99/0000;1;_

Pero la verdad no queda muy elegante.
Muchas Gracias.
Saludos.

rgstuamigo 07-07-2010 22:00:27

Si te estoy entendiendo bien :rolleyes: , pues si tu MaskEdit está formateado para recibir solo fechas y al escribir dicha fecha no lo haces bien o simplemente no está completa la fecha, pues te va salir ese error que mencionas al perder el foco.;)
Ahora el problema está en que si tienes escritas una fecha "a medias" y quieres borrar (clear) todo el contenido para volver a escribir pero lo haces desde un boton, pues te va salir ese error que mencionas. El motivo está en que cuando se presiona el boton, el foco (focus) que anteriormente estaba en el MaskEdit, pasa al tenerlo el boton por lo cual el MaskEdit internamente verifica si su contenido es correcto con su formato y si no lo es te lanza la Excepcion que mencionas, debido a que el foco ya no lo tiene el maskEdit.En otras palabras el componente MaskEdit siempre verifica si su contenido es correcto al momento de perder el foco.;) ; no te olvides de eso.

Una solucion que veo a tu problema es borrar el contenido de tu MaskEdit sin que éste pierda el foco para evitar dicho error. Eso implica que debes descartar la idea de hacerlo dendro de un boton, sino más bien la idea es utilizar una conbinacion de teclas para hacerlo;), por ejemplo podemos utilizar el evento OnKeyUp del MaskEdit para capturar nuestra combinacion de tecla, mas o menos así:
Código Delphi [-]
procedure TForm1.MaskEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if  ([ssCtrl]=Shift) and (Key=Windows.VK_DELETE) then // si se ha presionado las teclas Ctrl+Supr
        MaskEdit1.Clear; // borro el contenido del MaskEdit
end;
.
En ese ejemplo yo estoy usando la combinacion de teclas Ctrl+Delete, tú puedes usar cualquier otra combinacion.;).
Espero te sea de utilidad.:)
Saludos...:)

pborges36 08-07-2010 19:16:32

muchas gracias rgs, mi problema no es cuando el usuario quiere corregir la fecha que esta ingresando.
El problema es cuando ingreso la fecha de baja, guardo el registro en la base de datos. Luego quiere modificar ese campo, o sea, borrar el contenido de este maskedit y guardar en la base de datos.
Tambien se presenta el problema cuando empezaste a escribir la fecha y luego quieres dejarla vacia como al principio.
Espero se entienda.
Muchas gracias.


La franja horaria es GMT +2. Ahora son las 08:55:34.

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