Pues a mi me funciona bien, creo que debes hacer una mejora al llamar el metodo remove, asi:
Código Delphi
[-]
if mango <> nil then
RemoveHint(mango);
Para que nos aseguremos que la variable mango siempre tenga algo al momento de llamar el metodo RemoveHint
.
Al llamar el RevealHint deberia tener otra mejora, asi:
Código Delphi
[-]
if mango = nil then
mango := RevealHint(Edit1);