Показать сообщение отдельно
  #3  
Старый 04.02.2012, 15:12
isp isp вне форума
Прохожий
 
Регистрация: 31.01.2012
Сообщения: 6
Репутация: 10
Печаль

Цитата:
Сообщение от DelphiM0ZG
Что-то как-то запутано. Мне не понятно зачем использовать поток для вызова формы и ввода данных в неё. Я бы использовал поток для формирования сложного отчёта или копирования (перемещения) большого файла, если Application.ProcessMessages не прокатывает или чем-то не устраивает. На практике использовал потоки для визуализации алгоритмов шифрования. Чтобы прога не зависала во время цикла, обычно хватает этого: Application.ProcessMessages. Может тогда как-нибудь по таймеру сделать есть вариант?

допустим создается 40 потоков, в каждом потоке работает цикл, когда поток находит необходимые данные, он выводит их мне в доп. форме, я отправляю ему данные, поток продолжает свою работу.

необходимые данные - изображения, поэтому програмно трудно их обработать.

да и хочется сделать, так как описал, для своего развития можно сказать

вызов формы делаю через процедуру синхронизации, при этом поток, вызвавший дополнительную форму, приостанавливает свою работу. после закрытия формы поток продолжает свою работу.

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

также, так как форма еще не создана, я не могу передать данные в тот же компонент Img класса timage. создаю компонент динамически, все равно не передает данные-ошибка.

Код:
f:=tformclass(findClass('TForm4'));
  b:=f.create(application);
  b.Caption:=login;
 
  img:=TImage.Create(Application);
  with img do
  begin
  Top:=16;
  Left:=16;
  Height:=74;
  Width:=212;
  end;
  b.InsertControl(img);
 
  b.img.Picture.LoadFromFile(name_pic);
  b.ActiveControl:=edites;
  b.Show;


а если заранее задать img и открыть уже в дополнительной форме:

Код:
img.Picture.LoadFromFile(name_pic);

то как уже сказал отображается картинка только последнего потока.

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

примного благодарен!
Ответить с цитированием