BaloonHint ist, wie auch das normale Hint, nur ein ganz normales Fenster.
Du könntest eine Ableitung davon machen und deinen Close-Button so einbauen.
Ich habe die Klasse auch abgeändert, weil ich eine andere Formatierung des Textes brauchte. Habe das über eine eigene Komponente gelöst. Wie im Beispiel noch OnMouseXXX einbinden und die neue Komponente unter CustomHint dem jeweiligen Objekt zuweisen...
Leider ist das nicht ganz so einfach, da
TCustomHint = class(TComponent)
eben kein normales Fenster ist. Dieses wird erst intern im ShowHint erzeugt und ist vom Typ
TCustomHintWindow
. Dummerweise ist das ShowHint auch nicht virtuell, noch gibt es eine andere Möglichkeit die Fensterklasse zu beeinflussen oder an das tatsächliche Fenster heranzukommen.