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

OnMeasureItem и Items.Objects   Найти похожие ветки 

← →
ZeK   (2006-12-15 10:56) [0]

Задача постороить список с варьируемой высотой пунктов. Высота вычисляется из значений связанного объекта. Но в событии OnMeasureItem Items.Objects[I] равен nil. Можно конечно передать адрес через
Items.Add(IntToStr(Cardinal(Object)))
но программа критична ко времени, не подходит. Что делать?


← →
MBo ©   (2006-12-15 11:10) [1]

Yes, this is an old problem caused by the fact that the AddObject method
internally has to send two messages to the Windows listbox control. The
first creates the item and sets it text, the second stores the object into
the item. Unfortunately it is the first message (LB_ADDSTRING or
LB_INSERTSTRING) that causes the WM_MEASUREITEM message to be send back, so
the object has not been stored yet when the OnMeasureItem event fires.

The best way to fix this is to simply ignore the OnMeasureItem event.
Instead you measure the item immediately after the AddObject call and send a
LB_SETITEMHEIGHT message to the listbox to tell it the height.

Peter Below


← →
ZeK   (2006-12-15 11:54) [2]

Cool, thank you very match (На этом мой англ. заканчивается :).


← →
MBo ©   (2006-12-15 13:15) [3]

>На этом мой англ. заканчивается
Ну смысл-то понял?


← →
Nostradamus ©   (2006-12-15 21:09) [4]

Перед добавлением просто пиши в переменную что добавил и оттуда пери значения в OnMeasureItem


← →
ZeK   (2006-12-15 22:58) [5]

2 MBo ©
Понял :)
2 Nostradamus ©
Я использую BeginUpdate/EndUpdate, из-за большого размера списка. Поэтмоу через переменную неполучится



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

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



Память: 0.46 MB
Время: 0.027 c
2-1169759712
Vovan #2
2007-01-26 00:15
2007.02.11
Callback и классы


2-1169630947
распечатчик
2007-01-24 12:29
2007.02.11
Работа с принтером


2-1169789901
Officeman
2007-01-26 08:38
2007.02.11
ListView смещение позиций +1 -1


15-1169510840
imhohimho
2007-01-23 03:07
2007.02.11
анонимные прокси


1-1166456445
georgius
2006-12-18 18:40
2007.02.11
Unicode -> cp1251




   Наверх