Si te estoy entendiendo bien
, 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 MaskEdit1.Clear; 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...