Mam dziwny problem z TBaloonHint.
Chcę chować baloniki wcześniej niż jest ustalone w HideAfter (po poruszeniu myszką), za pomocą HideHint();
Funkcja tworząca baloniki
- Kod: Zaznacz cały
void ShowBalloonComponentTip(TBalloonHint * ptr, TComponent * owner, String szMsg, String szTitle, int timeout)
{
if(ptr)delete ptr;
ptr = new TBalloonHint(owner);
POINT pt;
GetCursorPos(&pt);
ptr->Title = szTitle;
ptr->Description = szMsg;
ptr->Style = bhsBalloon;
ptr->HideAfter = timeout;
ptr->ShowHint(pt);
}
Bezruch myszy wykrywa Timer:
- Kod: Zaznacz cały
void __fastcall TForm1::HintTimerTimer(TObject *Sender)
{
POINT pt;
GetCursorPos(&pt);
if(LastCurPos.x == pt.x && LastCurPos.y == pt.y)
{
if(CursorOnComponent->Name == ListBox1->Name)
{
ShowBalloonComponentTip(hint_msg, CursorOnComponent, "info","xxx",1000);
}
else if(CursorOnComponent->Name == OfflineL->Name )
{
ShowBalloonComponentTip(hint_msg, CursorOnComponent, "inne info","xxx",1000);
}
}
else if(hint_msg)hint_msg->HideHint();
LastCurPos = pt;
ShowMessage((int)hint_msg);
}
hint_msg to wskaźnik na TBalloonHint, należący do Forma1.
CursorOnComponent to TComponent * , nad którym ma sie pojawic hint. To akurat nieważne, ponieważ baloniki pojawiają się.
Problem jest w tym, że nie chcą sie chować - nie reagują na HideHint();
Zauważyłem, ze wskaźnik hint_msg jest zawsze 0. Dlaczego, skoro tworzę go przez new?






