That is, you wrap a particular type of object and pass (delegate) method calls to the wrapped object, this is the fundamental for the Decorator pattern. And yes that's achieved through a HAS-A relationship.
you can use delegation when you want to use another class's functionality,as is, without changing that behavior at all.
In another words,if you need to use functionality in another class,but you don't want to change that functionality,consider using delegation instead of inheritance.