Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2015
El_Chava El_Chava is offline
Miembro
 
Registrado: jun 2005
Posts: 62
Poder: 19
El_Chava Va por buen camino
Question Validar fecha componente TLSDateEdit

Hola amigos del foro estoy desarrollando un sistema con lazarus y necesito validar que el usuario no deje con una fecha invalidad el TLSDateEdit. Es la primera vez que estoy trabajando con este componente y no se como puedo realizar esta validación. Espero me puedan ayudar de antemano muchas gracias.
Imágenes Adjuntas
Tipo de Archivo: jpg ValidarFecha.jpg (39,4 KB, 16 visitas)

Última edición por El_Chava fecha: 09-02-2015 a las 03:42:55. Razón: no se adjunto la imagen
Responder Con Cita
  #2  
Antiguo 09-02-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En Delphi se suele hacer intentando convertirla dentro de un try..except para ver si la conversión es válida.
Supongo que se puede hacer igual.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-02-2015
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 293
Poder: 18
GustavoCruz Va por buen camino
Mejor descarga los componentes ZVDateTimeCtrls

GustavoCruz
Responder Con Cita
  #4  
Antiguo 11-02-2015
El_Chava El_Chava is offline
Miembro
 
Registrado: jun 2005
Posts: 62
Poder: 19
El_Chava Va por buen camino
Gracias Neftali y GustavoCruz por su pronta respuesta.Les comento que tratando de resolver el problema decide usar el componente que trae por defecto lazarus que es el TDateEdit. Este el código que uso para poder validar que el usuario ha introducido una fecha correcta.

Código:
var
 MyDateTimeVar: TDateTime;
begin
  try
   MyDateTimeVar:= StrToDate(fechaentrega.Text);
  except
     on EConvertError do begin
      Application.MessageBox('La fecha de entrega no es valida, favor de verificar','Error',mb_iconstop);
     end;
  end;
end;
Pero solo en ocasiones detecta el error. Le adjunto unas imágenes donde en una si me detecta el error por ejemplo si solo pongo el mes. pero si pongo día y mes incompletos y no pongo el año, no me muestra ningún mensaje.
Imágenes Adjuntas
Tipo de Archivo: jpg tryerrorexceptnodetectado.jpg (35,0 KB, 6 visitas)
Tipo de Archivo: jpg tryerrorexcept01-compressor.jpg (30,9 KB, 4 visitas)
Responder Con Cita
  #5  
Antiguo 11-02-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Se supone que has puesto el código en el onexit del componente?
¿Por qué creas un componente en tiempo de ejecución, si ya existe en diseño?
Responder Con Cita
  #6  
Antiguo 11-02-2015
El_Chava El_Chava is offline
Miembro
 
Registrado: jun 2005
Posts: 62
Poder: 19
El_Chava Va por buen camino
Hola casimiro el codigo lo puse en el boton de guardar. y no creo el componente en ejecución. Puse el siguiente codigo en el evento onshow de la forma donde tengo el TEditDate.

Código:
ShowMessage(FormatDateTime('DD/MM/YYYY',fechaentrega.Date));
y me muestra que la fecha de entrega tiene el valor de 30/12/1899.
Responder Con Cita
  #7  
Antiguo 11-02-2015
El_Chava El_Chava is offline
Miembro
 
Registrado: jun 2005
Posts: 62
Poder: 19
El_Chava Va por buen camino
Al fin logre dar con la respuesta del problema al darme cuenta de lo siguiente: lo que hice fue primeramente ver que valor me esta dando el TDateEdit si ponia los valores de esta manera '2_/2_/____' y en el evento onexit puse el siguiente codigo "dia:=formatDateTime('dd',fechaentrega.Date);mes:=formatDateTime('mm',fechaentrega.Date);anio:=forma tDateTime('yyyy',fechaentrega.Date); " asi me di cuenta que las variables guardaban dia = 30 mes = 12 anio=1899 investigando resulta ser que es la manera en que tDateEdit lo toma como una fecha NULA 30/12/1899 asi que lo que hice fue poner el siguiente codigo:

Código Delphi [-]
procedure TFrmAgregarDocumento.fechaentregaExit(Sender: TObject);
var
MyDateTimeVar: TDate;
ex:integer;
begin
   ex:=0;
   try 
         MyDateTimeVar:= StrToDate(fechaentrega.Text);
  except
        Application.MessageBox('La fecha de entrega no es valida, favor de verificar','Error',mb_iconstop);
        ex:=1;
   end;// end del try
   case ex of
      0:  if FormatDateTime('DD/MM/YYYY',fechaentrega.Date) = '30/12/1899' then
           begin
                 Application.MessageBox('La fecha de entrega no es valida, favor de verificar','Error',mb_iconstop);
           end;
    end;
end;
Asi de esta manera logré que me valide si tengo una fecha valida. Gracias por su ayuda y sugerencias.

Última edición por Casimiro Notevi fecha: 11-02-2015 a las 21:04:30.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar fecha judit25 Conexión con bases de datos 4 09-05-2006 17:48:33
Validar Fecha Gustavo Gowdak OOP 7 03-05-2006 19:24:37
validar en fecha, dia y mes alcides Varios 2 08-02-2005 16:29:33
Validar Fecha StrToDate franciscobucio Varios 5 22-10-2004 22:34:14
validar fecha morfeo21 Varios 1 15-10-2004 11:25:45


La franja horaria es GMT +2. Ahora son las 20:50:27.


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
Copyright 1996-2007 Club Delphi