Como calcular idade?
Como fazer para na hora de eu digitar a data de nascimento me retornar a idade com os meses tipo 15/07/1977 me dar a mensagem 28 anos e 03 meses por exemplo.
Agradeço a atençao de todos
ADRIANO
Agradeço a atençao de todos
ADRIANO
Adriano_servitec
Curtidas 0
Respostas
Firekiller
25/10/2005
Você poderia fazer assim:
var
MesN, AnoN, MesA, idadeAnos, idadeMeses:integer;
mesN := MonthOf( CampoDataNascimento );
anoN := YearOf( CampoDataNascimento );
mesA := MonthOf( date );
idadeanos:= anoN - YearOf( Date );
idadeMeses := 0;
if mesN > mesA then begin
idadeAnos := idadeAnos - 1;
idadeMeses := 12 + mesA - mesN;
end
else if mesN > mesA then begin
idadeMeses := mesA - mesN;
end;
Label.Caption := Format(´A idade é ¬d anos e ¬d meses´,[idadeAnos,idadeMeses]);
Nesse caso, levo em consideração apenas os meses, porém não os dias. A idade é exibida em um label. Verifique o trecho usado para tratamento do mes e implemente o restante para tratamento dos dias.
var
MesN, AnoN, MesA, idadeAnos, idadeMeses:integer;
mesN := MonthOf( CampoDataNascimento );
anoN := YearOf( CampoDataNascimento );
mesA := MonthOf( date );
idadeanos:= anoN - YearOf( Date );
idadeMeses := 0;
if mesN > mesA then begin
idadeAnos := idadeAnos - 1;
idadeMeses := 12 + mesA - mesN;
end
else if mesN > mesA then begin
idadeMeses := mesA - mesN;
end;
Label.Caption := Format(´A idade é ¬d anos e ¬d meses´,[idadeAnos,idadeMeses]);
Nesse caso, levo em consideração apenas os meses, porém não os dias. A idade é exibida em um label. Verifique o trecho usado para tratamento do mes e implemente o restante para tratamento dos dias.
GOSTEI 0
Adriano_servitec
25/10/2005
Ola firekiller, so uma duvidazinha, preciso de algum maskedit para digitar a data para saber o resultado? O codigo que vc postou eh uma funçao ou eu coloco em algum events...Desculpe nao entendi direito amigo.
Agradeço pela ajuda
Agradeço pela ajuda
GOSTEI 0
Adriano_servitec
25/10/2005
Ola amigo no Delphi 5 o qual estou usando nao tem a funçao MonthOf(), DayOf() nem YearOf(). Nao consigo compilar, Tem como declarar essas funçoes ou algum outro jeito de eu verificar a data de nascimento?
Eh muito importante
Agradeço a ajuda de todos
Obrigado
Eh muito importante
Agradeço a ajuda de todos
Obrigado
GOSTEI 0
Renatacoimbra
25/10/2005
As Funções MonthOf(), DayOf() e YearOf() estão na Unit DateUtils, no Delphi 5 acho q não tem ainda.
Mais vc pode usar essa função, uso ela e funciona certinho.
[]´s
Mais vc pode usar essa função, uso ela e funciona certinho.
function TForm1.IdadeExtenso(DataNasc: TDateTime): String; Var CalcIdade : Double; Ano, sA, sM, sD : String; A, M, D : Word; begin CalcIdade := ( Date - DataNasc); DecodeDate(CalcIdade,A,M,D); Dec(M); Ano := IntToStr(A); Delete(Ano,1,2); if A > 1 then sA := ´Anos´ else sA := ´Ano´; if M > 1 then sM := ´Meses´ else sM := ´Mes´; if D > 1 then sD := ´Dias´ else sD := ´Dia´; if Ano <> ´00´ then Result := Ano+´ ´+sA; if M > 0 then Result := Result + ´ ´+IntToStr(M)+´ ´+sM; if D > 0 then Result := Result + ´ ´+IntToStr(D)+´ ´+sD; end;
[]´s
GOSTEI 0
Adriano_servitec
25/10/2005
Obrigado pela funçao e ajuda Renata Coimbra, mais eu nao sei como posso chama-la, no meu programa. Desculpe minha ignorancia mais nao consigo saber.
GOSTEI 0
Firekiller
25/10/2005
Colega, a função você pode chamar em qualquer momento. A colega Renata colocou em forma de função, você simplesmente pode colocar ela no evento onclick de um botão ou no evento onexit de algum maskedit/edit. Se for no caso de você estar usando um edit, fiocaria assim:
label.Caption := IdadeExtenso(StrToDate(edit1.text) );
e então seria mostrado no label o que você quer.
label.Caption := IdadeExtenso(StrToDate(edit1.text) );
e então seria mostrado no label o que você quer.
GOSTEI 0