Não permitir digitar mês e ano superior que o atual
Como faço pra impedir que o usuário digite uma data onde o [b:ad8096456f]mês e o ano[/b:ad8096456f]seja maior que o atual?
Exemplo,
estamos em Maio/2003, [b:ad8096456f]o usuário só podia digitar no máximo[/b:ad8096456f] 31/05/2003
e também se ele tentar um ano que não seja o atual tem que dar mensagem!
Já agradeço muito qualquer ajuda,
Alex
Exemplo,
estamos em Maio/2003, [b:ad8096456f]o usuário só podia digitar no máximo[/b:ad8096456f] 31/05/2003
e também se ele tentar um ano que não seja o atual tem que dar mensagem!
Já agradeço muito qualquer ajuda,
Alex
Alex_
Curtidas 0
Respostas
Aroldo Zanela
02/05/2003
Colega,
No pacote da RxLib tem uma unit denominada DateUtil.pas, lá tem uma função para obter o último dia do mes, considando inclusive, quando é ano bisexto. No delphi7 isso já é nativo. Se você não conseguir, me avisa que eu te mando.
No pacote da RxLib tem uma unit denominada DateUtil.pas, lá tem uma função para obter o último dia do mes, considando inclusive, quando é ano bisexto. No delphi7 isso já é nativo. Se você não conseguir, me avisa que eu te mando.
GOSTEI 0
Schwarze
02/05/2003
tente assim:
function UltDiaMes(Data: TDateTime): TDateTime; var a, m, d: word; begin DecodeDate(Data, a, m, d); //mudar dia da data para dia 1º de data Data:= EncodeDate(a, m, 1); //mudar data pra algum dia do mês seguinte Data:= Data + 32; //removendo o dia, a data fica sendo o último dia do mês DecodeDate(Data, a, m, d); Data:= Data - d; end;
GOSTEI 0
Schwarze
02/05/2003
E, claro, não esqueça da última linha:
result:= Data;
GOSTEI 0
Aroldo Zanela
02/05/2003
Para Delphi7:
Declare DateUtils na lista de uses;
Teste o exemplo:
Declare DateUtils na lista de uses;
Teste o exemplo:
procedure TForm1.BitBtn1Click(Sender: TObject); begin If not isValidDate(DateTimePicker1.Date) then ShowMessage(´Data inválida´); end; function TForm1.IsValidDate(EnteredDate: TDateTime): Boolean; var Ano, Mes, Dia: Word; begin DecodeDate(Date, Ano, Mes, Dia); Result := Trunc(EnteredDate) <= EncodeDate(Ano,Mes,DaysInMonth(Date)); end;
GOSTEI 0