Según mis cálculos no funciona, yo le haría los siguientes cambios.
Código:
procedure TForm1.Button1Click(Sender: TObject);
var
Nacimiento:Tdate;
begin
nacimiento:=EncodeDate(1975,7,1);
ShowMessage(IntToStr(Edad(nacimiento)));
end;
Function Edad(FechaNacimiento : TDate) : Integer;
Var
an, mn, dn : Word;
ahoy, mhoy, dhoy : Word;
Begin
DecodeDate(FechaNacimiento, an, mn, dn);
DecodeDate(Now, ahoy, mhoy, dhoy);
If (mn > mhoy) or((mn = mhoy) and (dn > dhoy)) then
Result:=ahoy - an - 1
else
Result:=ahoy - an;
End;
Un Saludo.