Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Vales08.

Lo que te sugirieron el amigo Caral y seguidamente BlueSteel es la opción más simple y eficiente. Si no te agrada el DateTimePicker, seguramente haya algún otro componente que lo haga de la forma que deseas. No conozco ninguno, y precisamente eso me convence de su existencia.

Usando un TDBEdit se me ocurre que una forma de controlar lo ingresado, es verificarlo en el evento OnSetText del TField a evaluar, ya que este evento se produce cuando la propiedad Text recibe un nuevo valor y antes de ser aplicado.

Hay que redactar código y lo hará al salir del DBEdit. Evaluarlo mientras estás escribiendo no lo veo viable ya que por ejemplo es lícito ingresar un día mayor a 30 siempre que no esté seguido del mes de abril, lo mismo un día 29 si no esta seguido del mes de enero y de un año no bisiesto. Y como el programa no puede adivinar que mes y año serán ingresados seguidamente...

Un ejemplo como para hacercarte una idea:
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  DataSet.FieldByName('FECHA').OnSetText:= CampoSetText;
  DataSet.FieldByName('FECHA').EditMask:= '!99/99/0000;1;_'; 
end;

procedure TForm1.CampoSetText(Sender: TField; const Text: String);
{$J+}
const
   DiaM :array[1..12] of byte=(31,28,31,30,31,30,31,31,30,31,30,31);
{$J-}
var
  dd,mm,yy: Integer;
begin
  if (Trim(Copy(Text,1,2))='')or(Trim(Copy(Text,4,2))='')or(Trim(Copy(Text,7,4))='') then
    raise Exception.Create('Formato de fecha inválido');
  TryStrToInt(Copy(Text,7,4),yy);
  TryStrToInt(Copy(Text,4,2),mm);
  TryStrToInt(Copy(Text,1,2),dd);
  if ((yy mod 4=0)and(yy mod 100<>0))or(yy mod 400=0) then inc(DiaM[2]);
  if not (mm in [1..12]) then
    raise Exception.Create('Mes erróneo');
  if not (dd in [1..DiaM[mm]]) then
    raise Exception.Create('Día erróneo');
end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2011 a las 01:04:20.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 dbedit para horario gonza_619 Varios 3 12-12-2010 10:15:03
validar un dbedit moyo18 Conexión con bases de datos 32 08-01-2009 20:19:11
Juntar fecha y hora para consulta SQL Iuconlas SQL 6 21-02-2007 12:16:40
Problema para validar fecha en java Alejo JAVA 2 09-02-2007 12:54:06
Validar y Autocompletar Fecha en un DBEdit gluglu OOP 4 29-12-2006 11:24:06


La franja horaria es GMT +2. Ahora son las 07:34:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi