|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
При загрузке картинки показать прогресс
В программе на Дельфи загружаю изображение так:
Код:
Image1.Picture.LoadFromFile('C:\kartinka.jpg'); Загружаю большое изображение и необходимо во время загрузки показывать на каком этапе находится процесс загрузки. Проблема в том, что во время загрузки изображения программа просто замораживается на это время и ничего кроме загрузки не выполняет. Как решить эту задачу и при помощи ProgressBar показать процесс загрузки? Надеюсь на вашу помощь. |
#2
|
||||
|
||||
Я думаю, что это с обычным TImage не возможно... надо или писать свой компонент, с выводом загрузки, или просто показывать в этот момент форму-заставку, типо "Пожалуйста, подождите...", и когда картинка полностью загрузиться (а это можно узнать, например из условия if(Image1 <> nil), просто убирать форму-заставку...
Помогаю за Спасибо |
#3
|
||||
|
||||
ну можно на момент загрузки гонять из стороны в сторону на прогресс баре полоску а когда загрузится убираем и пишем мол загружено
|
#4
|
||||
|
||||
Все это от Лукавого. Все что нужно - давно придумано. А нужно просто менять курсор на "песочные часы" и не запариваться.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
Событие OnProgress
|
#6
|
|||
|
|||
Цитата:
Этот вариант к сожалению не подходит... А по поводу гонять полоску прогресс бара - меня бы устроило, просто проблема в том, что программа просто «подвисает» на время загрузки большой картинки, а потом продолжает работу. Поэтому прогресс бар просто не реагирует в этот момент ни на что. Какие-нибудь идеи есть как решить эту задачу? |
#7
|
||||
|
||||
Я уже ж говорил, надо прогрес бар просто поставить на другую форму, и тогда он реагировать будет...
Цитата:
Помогаю за Спасибо |
#8
|
|||
|
|||
Цитата:
Цитата:
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end; procedure TForm1.Image1Progress(Sender: TObject; Stage: TProgressStage; PercentDone: Byte; RedrawNow: Boolean; const R: TRect; const Msg: string); begin ProgressBar1.Position:=PercentDone; label1.Caption:=IntToStr(PercentDone)+'%'; Application.ProcessMessages; end; |
#9
|
|||
|
|||
Обрабатывайте заполнение прогрессбара с использованием Application.ProcessMessages. Тогда он будет работать! У Вас ведь приложение в одном потоке работает
|