Ver Mensaje Individual
  #2  
Antiguo 07-07-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 17
rgstuamigo Va por buen camino
Thumbs up

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 // 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...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita