| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > ListView, прорисовка по OnCustomDraw |
| Автор: Lexicss 7.10.2010, 23:13 | ||
| Имеется динамический ListView. Item-ов много, под 2000. Однако проблема возникла когда включил прорисовку строчек цветом:
Событие и соответсвенно сам код выше выполнется по любому движению при ListView. Всё окрашивается, однако со временем приложение начинает вести себя неадекватно и выдаёт исключение Out of system resources. при отладке обратил внимание что такое происходит когда переменная ij достигает ij= 9881..9882. Где здесь утечка памяти? Как этого избежать при окраске? |
| Автор: Snowy 8.10.2010, 12:27 |
| Проверил на Delphi7. Никаких утечек памяти, юзер и GDI объекты тоже в норме. Когда ij достигла 50000, стало скучно, вырубил. |
| Автор: Lexicss 8.10.2010, 13:54 |
| У меня Delphi5, У Listview ViewStyle = vsReport OwnerData = True Форма(Form2) содержащая ListView не главная. Неадекватность проявляется тем что Счётчик ij = 9881 и прекращает наращиваться, шрифт текста в листвью вдруг становится жирным(но не всегда так). Однако свиду всё работает, двигаешь листвью, всё окрашивается. Но ВСЕ формы(и все другие формы из других запущенных приложений прекращают перерисовываться). Закрываю форму Form2(caFree). Приложение своё не закрываю. При повторном запуске(создании) формы Form2 выскакиевает исключение OutOfSystemResources. И форма уже не появляется и при последующих попытках тоже, пока не перезапустишь само приложение. |
| Автор: Snowy 8.10.2010, 16:26 |
| Значит где-то создаются GDI объекты, но не освобождаются. Но в этом коде проблем не вижу - тут всё чисто. |
| Автор: Lexicss 8.10.2010, 16:48 |
| Snowy, Чтож всё же спасибо за мнение. Мож и вправду это глюк Delphi 5? Притом слежу за оперативкой во время упорной прокрутки Listview. Особо не растёт. чутка подымается по 1-2 Мб в минуту. |
| Автор: RomanEEP 11.10.2010, 11:05 |
| можно использовать resource profiler, например встроенный в AQTime |