| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > OnMeasureItem в TListBox |
| Автор: Alix 6.5.2005, 09:38 |
| При рисовании со стилем lbOwnerDrawVariable по хелпу должны происходить два события - измерение высоты элемента и сразу после этого - его прорисовка. В моем проете ширина формы и соотв. ListBox'a может менятся, => изменится высота некоторых элементов (переносы есть). И следовательно их высоту следует заново замерить, чтобы корректно отображать. Но на деле, измерение высоты происходит только при первой прорисовке итем'a! И заставляя ListBox перерисовываться с помощью Repaint, Refresh и Invalidate вызвать новое измерение высоты не удалось... Что делать? |
| Автор: Rennigth 6.5.2005, 09:41 |
| так и непонял о чем ты но попробуй вызвать Resize |
| Автор: Alix 6.5.2005, 10:44 |
| Чего тут неясного? Вот. Ширина ListBox'a достаточна, чтобы вместить текст. http://zavalenka.narod.ru/right.PNG А теперь, ширина уменьшилась и долдно было произойти повторное измерение высоты элементов. Но их высоты не изменились!.. И теперь в событии OnDrawItem происходит некорректное рисование... http://zavalenka.narod.ru/wrong.PNG Нужно как-то заставить ListBox еще раз измерить высоту... Но как? |
| Автор: s-mike 6.5.2005, 11:07 | ||||
|
| Автор: Alix 6.5.2005, 12:52 |
| Спасибо |