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

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


Axbor

Вопрос

Опубликовано

Как правильно заполнит ListBox в потоке? И еще в ListBox е имеется Image которая должен загрузиться с интернета.. Как всё это правильно сделать в потоке?

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

  • 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 эмодзи.

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

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

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

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