Fórum Não permitir digitar mês e ano superior que o atual #157490

02/05/2003

0

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


Alex_

Alex_

Responder

Posts

02/05/2003

Aroldo Zanela

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.


Responder

Gostei + 0

02/05/2003

Schwarze

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;



Responder

Gostei + 0

02/05/2003

Schwarze

E, claro, não esqueça da última linha:
result:= Data;



Responder

Gostei + 0

02/05/2003

Aroldo Zanela

Para Delphi7:

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;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar