int IndexAtPos = -1;
void __fastcall TfTest::ListBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
// если перерисовка элемента под курсором мыши - зададим цвет фона
if ( Index == IndexAtPos ) ListBox1->Canvas->Brush->Color = clRed;
// отобразим текст элемента
ListBox1->Canvas->TextRect( Rect, Rect.Left + 2, Rect.Top + 2,
ListBox1->Items->Strings[Index] );
}
void __fastcall TfTest::ListBox1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
// получим индекс элемента списка, находящегося под курсором мыши
int Ind = ListBox1->ItemAtPos(Point(X,Y), true);
// если новый индекс - запомним и перерисуем
if ( IndexAtPos != Ind )
{
IndexAtPos = Ind; ListBox1->Repaint();
}
}
подсвечивание в ListBox
не смог найти ничего кроме дорисовывания хинтов когда длина строки больше, чем самого листбокса. Мне же надо, чтобы при наведении мышки на строку ее цвет менялся. Думаю, что это надо делать в MouseMove однако как?
спасибо за любую инфу а лучше код )))))
видно, как помигивает - перерисовывается, но ничего не выделяется
пробовал на БЦБ 6.0
сейчас что-то своё подумаю...
Только тогда активируется собственный обработчик перерисовки
OnDrawItem.
в следующий раз, не забывайте, пожалуйста, указывать, что где ещё менять ;)
Цитата: AntidotE
Супер, работает! :) Полезная фишка...
в следующий раз, не забывайте, пожалуйста, указывать, что где ещё менять ;)
в следующий раз, не забывайте, пожалуйста, указывать, что где ещё менять ;)
не забывайте почитать справку )