• 0
NitroTek

Ассинхронная загрузка изображений в ListBox

Вопрос

Делаю загрузку фоток в listBox в отдельном потоке. Загружается отлично, но при скроллинге проблемы, TImage начинают перемешиваться. Т.е картинки не соответствуют элементам списка, а происходит какой-то рандом.

 

TBitmap(ListItem.StylesData['avatar.bitmap'].AsObject).LoadFromURL(UserEntry.PhotoLink); 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

7 ответов на этот вопрос

  • 0

Я думаю, что просто ListItem - это не тот ListItem, который должен быть :)

Без кода, показывающего, откуда он взялся сложно что-то сказать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Да, и забыл сказать: работа с визуальными элементами в отдельном потоке - это плохо, очень плохо...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

у меня с загрузкой картинок в ListView проблемы были. пока не решил. проявлялась так - при загрузке более то ли 50 то ли 70 картинок, надписи на итемах становились полностью черными, такое ощущение что из за нехватки памяти. поэтому от этого пока отказался. есть конечно в планах сделать что бы картинка грузилась в итем при его показе и уничтожалась при его скрытии с экрана, но пока еще не придумал как это можно красиво реализовать. ибо как это делается в стандартном варианте, через пересчет всех высот всех итемов и вычисления из этого виден или нет твой итем, мне не понравилось. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
Да, и забыл сказать: работа с визуальными элементами в отдельном потоке - это плохо, очень плохо...

 

После загрузки естественно поток синхронизируется с главным.

 

ListItem это обычный TListBoxItem;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Решил проблему из соседней темы:

 

newItem.OnApplyStyleLookup := MissMessageApplyStyle;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

можно попробовать использовать  listBox.Begin update а  в конце где синхронизация потока listBox.End update.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу