Советы по Delphi

диван в современном стиле несколько лет только у них и закупаюсь          

Ошибка TListBox MeasureItem


MeasureItem не работает, если элементы были добавлены через AddObject.

AddObject работает в два этапа. Сначала добавляется строка, затем указатель на объект. Проблема заключается в том, что добавление строки инициирует событие MeasureItem прежде, что происходит присвоение указателя на объект, поэтому в обработчик события MeasureItem вместо указателя попадает *мусор*. Не nil, не данные, а простой мусор.

Я обошел эту проблему, устанавливая глобальный флаг перед загрузкой элементов. MeasureItem проверяет этот флаг, и если он выставлен, указатель на объект игнорируется и возвращается произвольная высота. После этого я загружаю элементы, в цикле вычисляю высоту каждого, и для установления высоты использую сообщение lb_SetItemHeight. Все это я делаю перед тем как ListBox станет видимым. В конце я сбрасываю флаг, поскольку остальные вызовы MeasureItem обрабатываются правильно.

Конечно, это все криво, но другого решения я пока не знаю.

-Scott Samet [000720]



Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий