Вниз
Скачать: CL | DM;

ListView.OwnerDraw - не меняется высота Item   Найти похожие ветки 

← →
simpson ©   (2005-11-15 15:06) [0]

Здравствуйте.

Возникла необходимость заменить стандартную отрисовку ListView со стилем "репорт" на свою. Установил свойство OwnerDraw в True, написал обработчик события OnDrawItem. Обнаружилась одна проблема — высота прямогугольника в котором должен рисоваться item, мягко говоря, не соответствует действительности — она меньше, чем нужно (шрифт у ListView достаточно крупный по сравнению с системным).

При дефолтной отрисовке высота item вычисляется корректно, мне передается черт знает что. Может, кто сталкивался с подобной проблемой?


← →
simpson ©   (2005-11-15 18:03) [1]

Проблема решена, мож кому пригодится.

Нужно обрабатывать сообщение WM_MEASUREITEM у окна-владельца листвью.

В общем случае решается подменой оконной процедуры у ListView.Parent.Handle, в подмененной процедуре при обработке WM_MEASUREITEM указывать нужную высоту айтема.

Странно другое -  почему это не делается в самом классе TListVew... Ведь то же самое реализовано для TListBox. Видимо, загадка от разработчиков VCL.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
4-1128594432
Woolen
2005-10-06 14:27
2005.12.11
Обработка сообщения в VCL и в отдельной процедуре


1-1131652868
Layner
2005-11-10 23:01
2005.12.11
Узнать название родителя у родителя виз. комп.


14-1132251501
leonidus
2005-11-17 21:18
2005.12.11
Как подсчитать кол-во обращений к сканеру


1-1132129440
pav74
2005-11-16 11:24
2005.12.11
Мастера! кто-то знает алгоритм автоматизации контроля температуры


2-1132619370
Кейт Тимонс ))
2005-11-22 03:29
2005.12.11
Узнать версию виндовз




   Наверх