Главная / FAQ по Builder'у / 17 Как сделать, чтобы при наведении...

17 Как сделать, чтобы при наведении мышкой на элемент ListBox'а, у которого длина больше длины сомого ListBox появлялся Hint?


Где нибудь на показывании формы :
    Application->HintPause = 0;
    Application->HintShortPause = 0;
    Application->HintHidePause = 10000000000;
    Application->OnShowHint = TIn4Form->DoShowHint;

void __fastcall TIn4Form::DoShowHint(System::AnsiString &HintStr, bool
&CanShow, THintInfo &HintInfo)
{
  CanShow = true;
  if (HintInfo.HintControl == ListBox3 )
  {
         if( Mouse->Capture )
        {
            CanShow = false;
            return;
        }
     HintInfo.ReshowTimeout = 100;
     /*HintInfo.HintColor = clAqua;// Changes only for this hint*/

     TPoint pnt;
     SIZE strsize;
     int numstr = ListBox3->ItemAtPos(HintInfo.CursorPos,true);
     if(numstr< 0)
     {
      CanShow = false;
      Application->HideHint ();
      return;
     }
     HintStr = ListBox3->Items->Strings[numstr];
     strsize = ListBox3->Canvas->TextExtent(HintStr);
     if(strsize.cx<=ListBox3->ClientWidth)
     {
      CanShow = false;
      Application->HideHint ();
      return;
     }
     pnt.x = -1;
     pnt.y =
int(HintInfo.CursorPos.y/ListBox3->ItemHeight)*ListBox3->ItemHeight - 3;
     pnt = ListBox3->ClientToScreen(pnt);
     HintInfo.HintPos.x = pnt.x;
     HintInfo.HintPos.y = pnt.y;
     HintInfo.HintMaxWidth = Screen->Width-pnt.x;
     /*HintInfo.HideTimeout = 100;*/
  }
}
И не забудь поставить ShowHint у интересующего ListBox-а.
Denis Dudko 2:5020/400

Предыдущий вопрос   |  Список вопросов   |   Следующий вопрос

источник      На главную      by jenyok
Copyright © 2003 JTSOFT
Сайт управляется системой uCoz