Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как правильно заполнит ListBox в потоке?


Axbor

Вопрос

Рекомендуемые сообщения

  • 0

с экранными компонентами можно работать только в главном потоке

поэтому все данные нужно подготовить в отдельном потоке и как можно скорее вылить на экран.

скачивание картинок можно запускать также в отдельных потоках. в событии OnTerminate находить тот item, для которого предназначалась картинка, и вставлять ее туда

Ссылка на комментарий
  • 0
1 час назад, krapotkin сказал:

с экранными компонентами можно работать только в главном потоке

поэтому все данные нужно подготовить в отдельном потоке и как можно скорее вылить на экран.

скачивание картинок можно запускать также в отдельных потоках. в событии OnTerminate находить тот item, для которого предназначалась картинка, и вставлять ее туда

А что скажете на создание потока внутри (не главного) потока?

Ссылка на комментарий
  • 0
  • Модераторы
8 минут назад, Axbor сказал:

А что скажете на создание потока внутри (не главного) потока?

такое скушает только Windows.

я на форуме уже приводил такой пример

Ссылка на комментарий
  • 0
1 минуту назад, krapotkin сказал:

а как я отличу где вы его создали?

Вот например есть поток где я получаю с интернета данные (т.е. ссылки и др), создаю ListBoxItem, потом для загрузки картинки создаю в этом же потоке другой поток которая загружает картинку с интернета? код примерно так будет выглядит:

void __fastcall MyThread::Execute()
{
	//---- Place thread code here ----
	for(int i = 0; i < 10; i ++) {
		//Загружаю с интернета данные
		Synchronize(&MySynchronize);
		OtherThread *T = new OtherThread(false);   // На этом потоке должно скачиваться картинка
	}
}
void __fastcall MyThread::MySynchronize() {
	TListBoxItem *Item = new TListBoxItem(MainForm->ListBox1);
	Item->Text = "Hello" + IntToStr(itemindex);
	Item->Parent = MainForm->ListBox1;
}

Но проблема в том как определю на какой Item принадлежит эта картина. И вообще правильно ли такой подход?

Ссылка на комментарий
  • 0
3 минуты назад, ZuBy сказал:

если не принципиально использование TListBox, то используйте TListView

 

Ваш пример посмотрел, без разницы ListBox или ListView, но в вашем примере потоке загружается только картинка, а я хочу что бы и данные загружались с интернета...

Ссылка на комментарий
  • 0
8 минут назад, ZuBy сказал:

если не принципиально использование TListBox, то используйте TListView

 

Ах да я кажется понял... Загружаю данные на одном потоке, и при скроллинге загружаю картинки еще на одном потоке... Так правильно будет кажется...

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...