Como calcular idade?

Delphi

25/10/2005

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


Adriano_servitec

Adriano_servitec

Curtidas 0

Respostas

Firekiller

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.


GOSTEI 0
Adriano_servitec

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


GOSTEI 0
Adriano_servitec

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


GOSTEI 0
Renatacoimbra

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.

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

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

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.


GOSTEI 0
POSTAR