![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CustomItemDraw в TListView [D7, WinXP]
yurique © (2005-08-05 02:30:00)Проблема в следующем: при прорисовке элементов используется Columns[i].Width.. Так вот, при изменении ширины колонки (мышкой), событие прорисовки вызывается, но Columns[i].Width не обновляется, пока не закончится изменение ширины..
Подскажите плз, как сие дело обойти, т.е. мне нужно знать реальный размер колонок, или заставить его обновлятся в 'real-time'..
Спасибо..
Юрий Зотов (2005-08-05 05:48:00) [1]> yurique (05.08.05 05:40) [7]
Форме должно приходить WM_NOTIFY, перехватить не вопрос. Нужная информация там сидит в NMHDR (см. сообщения LVN_*).
yurique (2005-08-05 05:40:00) [2]:)
всё таки нет.. на самом деле там есть 4 этапа прорисовки.. но это ничего не меняет, ведь иначе, при изменеии размера, прорисовка просто отставала бы, а так..
спасибо за потраченное время.. а инфы по этому делу я так и не нашёл :)
pasha_golub (2005-08-05 05:19:00) [3]yurique (05.08.05 03:28) [5]\
Хм, вообщем, я с этим особо не про... разбирался. Но, по памяти помню, что у этого чуда три события для отрисовки итемов. И вызываются они каждое в свое время, я так думаю, в начале, в процесс и на финиши изменения. Осталось найти какое из них. Чего-то не веритя, чтобы было все так сложно. Как никак стандартный компонент.
ЗЫ это я так, чтобы рука не отсохла. Пользы от писанины моей явно мало. :0)
yurique (2005-08-05 03:28:00) [4]pasha_golub, ну я же не пять минут с этим про.. разбирался :)
и про дисплейРект я каким-то чудом слышал ;)
но это не то.. displayRect тоже возвращает "неактуальную" информацию, т.е. на самом деле я уже изменил размер колонки, а рект получу прежний.. пока не закончу изменять размер..
pasha_golub (2005-08-05 03:17:00) [5]Наврал я немножко, но не сильно...
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
Var ARect: TRect;
begin
ARect := Item.DisplayRect(drBounds);
//малюем до пасинения
end;
pasha_golub (2005-08-05 03:03:00) [6]Друх, тебе, вообще-то, ARect должон передаватся... ;-)
yurique (2005-08-05 02:54:00) [7]да нет..не поможет : )
Юрий Зотов (2005-08-05 02:41:00) [8]On AdvancedCustomDrawSubItem ?