Lo más cómodo sería instalarte un componente de alguna librería, como el
TDBDateEdit que menciona
rgstuamigo o algún
TDBMaskEdit que pueda haber por ahí.
Otra cosa que puedes hacer es, en el evento OnExit del TDBEdit, comprobar la fecha y, si no tiene el formato adecuado, mostrar el mensaje de error y hacer que no pierda el foco.
Por ejemplo, se me ocurre esto (no sé si tendrá alguna carencia):
Código Delphi
[-]
procedure TForm1.DBEdit1Exit(Sender: TObject);
var
Fecha: TDateTime;
begin
try
Fecha:=StrToDate(DBEdit1.Text);
except
ShowMessage('El formato de fecha introducido no es válido');
DBEdit1.SetFocus;
end;
end;
Por otra parte, y como también ha dicho rgstuamigo, es muy raro que el programa se cierre por un error como ese. ¿El error que te sale es el típico de Delphi "This is not a valid Date format", o es algún error más "extraño"? Podrías decirnos qué error te sale, a ver si se puede solucionar lo de que se cierre el programa
Salu2