Fórum passar e receber valores para uma função #483427
24/06/2014
0
Amigos,
Baixei na net uma função que calcula idade entre data do nascimento e a data atual.
Estou precisando de ajuda para incluí-la no meu programa.
Na entrada de dados do cadastro, os campos Nome, endereço, ... data de nascimento, este por um DbEdit setado ao campo da tabela (formatado como __/__/____).
DÚVIDAS:
PRIMEIRO - Não sei como definir esta função na seção TYPE do form;
SEGUNDO - como incluir no evento OnExit do DbEdit os parâmetros DataIni, DataFim (que será a data do sistema)
procedure Tfrm_Alunos.DBEdit1Exit(Sender: TObject);
begin
((minha dúvida numero 2))
end;
TERCEIRO - como usar no componente Edit do meu form o retorno desta função.
Agradeço a ajuda.
att
gilberto
Function CalculaIdade(DataIni, DataFim : TDateTime) : string;
var Idade : String;
Resto : Integer;
iDia, iMes, iAno, fDia, fMes, fAno : Word;
nDia, nMes, nAno, DiaBissexto : Double;
begin
DecodeDate(DataIni,iAno,iMes,iDia);
DecodeDate(DataFim,fAno,fMes,fDia);
nAno := fAno - iAno;
if nAno > 0 then
if fMes < iMes then nAno := nAno - 1
else if(fMes = iMes)and(fDia < iDia)then nAno := nAno - 1;
if fMes < iMes then
begin
nMes := 12 - (iMes-fMes);
if fDia < iDia then nMes := nMes - 1;
end
else if fMes = iMes then
begin
nMes := 0;
if fDia < iDia then nMes := 11;
end
else if fMes > iMes then
begin
nMes := fMes - iMes;
if fDia < iDia then nMes := nMes - 1;
end;
nDia := 0;
if fDia > iDia then nDia := fDia - iDia;
if fDia < iDia then nDia := (DataFim-IncMonth(DataFim,-1))-(iDia-fDia);
Result := '';
if nAno = 1 then Result := FloatToStr(nAno)+ ' Ano '
else if nAno > 1 then Result := FloatToStr(nAno)+ ' Anos ';
if nMes = 1 then Result := Result + FloatToStr(nMes)+ ' Mês '
else if nMes > 1 then Result := Result + FloatToStr(nMes)+ ' Meses ';
if nDia = 1 then Result := Result + FloatToStr(nDia)+ ' Dia '
else if nDia > 1 then Result := Result + FloatToStr(nDia)+ ' Dias ';
end;
Baixei na net uma função que calcula idade entre data do nascimento e a data atual.
Estou precisando de ajuda para incluí-la no meu programa.
Na entrada de dados do cadastro, os campos Nome, endereço, ... data de nascimento, este por um DbEdit setado ao campo da tabela (formatado como __/__/____).
DÚVIDAS:
PRIMEIRO - Não sei como definir esta função na seção TYPE do form;
SEGUNDO - como incluir no evento OnExit do DbEdit os parâmetros DataIni, DataFim (que será a data do sistema)
procedure Tfrm_Alunos.DBEdit1Exit(Sender: TObject);
begin
((minha dúvida numero 2))
end;
TERCEIRO - como usar no componente Edit do meu form o retorno desta função.
Agradeço a ajuda.
att
gilberto
Function CalculaIdade(DataIni, DataFim : TDateTime) : string;
var Idade : String;
Resto : Integer;
iDia, iMes, iAno, fDia, fMes, fAno : Word;
nDia, nMes, nAno, DiaBissexto : Double;
begin
DecodeDate(DataIni,iAno,iMes,iDia);
DecodeDate(DataFim,fAno,fMes,fDia);
nAno := fAno - iAno;
if nAno > 0 then
if fMes < iMes then nAno := nAno - 1
else if(fMes = iMes)and(fDia < iDia)then nAno := nAno - 1;
if fMes < iMes then
begin
nMes := 12 - (iMes-fMes);
if fDia < iDia then nMes := nMes - 1;
end
else if fMes = iMes then
begin
nMes := 0;
if fDia < iDia then nMes := 11;
end
else if fMes > iMes then
begin
nMes := fMes - iMes;
if fDia < iDia then nMes := nMes - 1;
end;
nDia := 0;
if fDia > iDia then nDia := fDia - iDia;
if fDia < iDia then nDia := (DataFim-IncMonth(DataFim,-1))-(iDia-fDia);
Result := '';
if nAno = 1 then Result := FloatToStr(nAno)+ ' Ano '
else if nAno > 1 then Result := FloatToStr(nAno)+ ' Anos ';
if nMes = 1 then Result := Result + FloatToStr(nMes)+ ' Mês '
else if nMes > 1 then Result := Result + FloatToStr(nMes)+ ' Meses ';
if nDia = 1 then Result := Result + FloatToStr(nDia)+ ' Dia '
else if nDia > 1 then Result := Result + FloatToStr(nDia)+ ' Dias ';
end;
Gilberto Moreira
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)