Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2013, 13:19   #1
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию Смена изображения из потока

Доброго времени суток!
У меня в программе есть форма авторизации, и пока в потоке работает авторизация, я включаю для пользователя анимацию. Сам gif гружу из ресурсов, потом загружаю
Код:
image1.picture.assign(gif);
где
Код:
gif: TGifImage;
Ну и ясное дело, после окончания авторизации мне нужно остановить анимацию и сменить картинку в Image1. Авторизация работает в анонимном потоке(TThread.CreateAnonymousThrea d), и там вызываю событие, например,
Код:
if Assigned(OnAuth) then OnAuth(arSuccess, FAuthInfo);
В самом событии вызываю процедуру из другой формы,
Код:
  frmLogin.StopAnimation;

procedure TfrmLogin.StopAnimation;
begin
  if (imgAuthProgress.Picture.Graphic is TGIFImage) then
  begin
    TGIFImage(imgAuthProgress.Picture.Graphic).Animate := False;
    //TGIFImage(imgAuthProgress.Picture.Graphic).Clear;
    Fgif.Free;
    imgAuthProgress.Picture.Graphic.Assign(nil);
    ImgLst.GetIcon(0, imgAuthProgress.Picture.Icon);
  end;
end;
но тогда происходит ошибка AV, именно на последней строке(также она происходит, когда снова активировать форму, или закрыть форму). Подозреваю, что-то делаю не так с Image1.
П.С. Если поток не использовать, то всё норм.
Вот и прошу помочи..если не очень ясно, попробую обьяснить лучше.
Догадываюсь, что дело в синхронизации...

_________________
РЕШЕНО
Сначала сделал так:
Код:
t: TThread;
begin
  t:=TThread.CreateAnonymousThread(
Потом в самой процедуре потока:
Код:
t.Synchronize(t,
            procedure begin
              if Assigned(OnAuth) then
                OnAuth(arInvalidLoginPass, FAuthInfo);
            end
          );

Последний раз редактировалось Delphi_ProGer; 14.05.2013 в 13:52. Причина: Решено! Извините за беспокойствие :) Просто мозги включились как только задал вопрос,а до этого целый день не знал как делать
Delphi_ProGer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поочередная смена изображения. QProfessional Общие вопросы Delphi 9 13.02.2012 10:32
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 BEL9ILLI Общие вопросы Delphi 3 06.12.2011 20:26
Смена цвета изображения при смене параметров faust-v JavaScript, Ajax 4 19.09.2011 11:46
Смена изображения при наведении не на белую область Alex Cones Общие вопросы Delphi 6 10.05.2009 17:17
Загрузка изображения из потока Joe_Tribbiani Общие вопросы Delphi 1 22.04.2009 03:07