Привет всем. Маленькая проблема, не знаю, что и делать. Компонент TListView в режиме vsReport не реагирует на OnColumnDragged!
Дело в том, что хотелось бы прятать колонки по правому клику на header'е. Можно выставить для TListColumn MinWidth = MaxWidth = Width = 0, и тогда колонка становится невидимой. Но тогда можно потянуть за divider (не знаю, как перевести), и колонка преспокойно рястягивается до любых размеров. Более того, колонка снова исчезает, если два раза кликнуть на header'е (не как DoubleClick, а просто два последовательных щелчка).
Поэтому и хотел использовать событие OnColumnDragged, чтобы снова выставлять ширину нужных колонок в 0. Попробовал потом заменить оконную процедуру для list view и сделать такую обработку WM_NOTIFY (из delphiworld.narod.ru):
switch(msg.Msg)
{
case WM_NOTIFY:
{
NMHEADER * nmHdr = (NMHEADER *)msg.LParam;
if (nmHdr->hdr.code == HDN_ENDTRACKW ||
nmHdr->hdr.code == HDN_ENDTRACKA)
{
ListView1->Columns->Items[1]->Width = 0;
Invalidate();
return;
}
else
{
oldWndProc(msg);
}
}
break;
default:
{
oldWndProc(msg);
}
}
Это не помогло.

Кто-нибудь знает, как с этим управится? Может, есть какие-то бесплатные компоненты, где можно посмотреть код? Есть еще вариант — удалять колонки и наново заполнять содержимое, но тогда возникают некоторые проблемы, так как первая колонка в TListView — "особенная", и вообще, не очень красиво, если есть несколько сотен строк, и все это перерисовывается белыми полосами. Благодарен за помощь