¿Qué significa no ha funcionado?, a mi me controla la entrada de fechas válidas.
Acabo de arrancar en Windows XP, cargo Delphi 7, pongo un EditMask1 con la máscara 99/99/0000 y un Edit1, en el evento OnExit del MaskEdit1 pongo esto
procedure TForm1.MaskEdit1Exit(Sender: TObject);
var
fecha: TDate;
begin
try
fecha := strtodate(MaskEdit1.text);
except
on exception do
begin
showmessage('Fecha no correcta');
MaskEdit1.SetFocus;
end;
end;
Edit1.Text := MaskEdit1.Text;
end;
Compilo y arranco el .exe y controla las fechas válidas
Dejo vacia la fecha y salta el showmessage indicando fecha incorrecta
Pongo fecha 10/12/1990 y no hay problemas
Pongo fecha 10/13/1990 y salta el showmessage indicando fecha incorrecta
Pongo fecha 33/12/1990 y salta el showmessage indicando fecha incorrecta
Pongo fecha 30/02/1990 y salta el showmessage indicando fecha incorrecta
Pongo fecha 29/02/1990 y salta el showmessage indicando fecha incorrecta
Pongo fecha 28/02/1990 y no hay problemas
Pongo fecha 29/02/1992 y no hay problemas (bisiesto)
Lo que pone Ragaru solo contrala la etrada vacía del día y deberías controlar la entrada vacía del mes y el año también porque con esto te ponen la fecha así
12/__ /____
y no detecta nada
En el OnExit del MaskEdit :
var
Dia, Mes, Anio : String;
begin
Dia := Copy(MaskEdit1.Text, 1,2);
Mes := Copy(MaskEdit1.Text, 4,2);
Anio := Copy(MaskEdit1.Text, 7,4);
If (Dia = ' ') or (Mes = ' ') or (Anio = ' ') Then
ShowMessage ('Fecha vacia totalmente o parcialmente');
end;
y esto no te evitaría que te pusieran fechas inválidas como 35/15/2009