You can use a CustomHint:
with TCustomHint.Create(Self) do begin
Title := 'temporary message';
Delay := 0;
HideAfter := 2000;
ShowHint(Point(X, Y));
end;
However it is not destroyed at the time it's hidden, but when its owner (Self) is destroyed. But you can of course re-use the same hint instance.