![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хотелось бы сделать ProgressBar в модальном окне для своей программы, не знаю как... [D5]
Yuraz © (2001-12-28 14:00:00)Идёт процесс секунд 10(цикл), типа группового переименования файлов, подскажите, как к этому делу прицепить ProgressBar. Спасибо.
Aleksandr (2001-12-28 18:57:00) [1]2 Alex_Sudakov
Вы имели в виду - ProcessMessages?
А с потоком мона не заморачиваться - количество файлов данного типа получить легко, перекрывается WndProc главной формы, создается юзверское сообщение WM_UpdateProgressBar, которое после каждого прохода цикла отправляется форме, имеющей ProgressBar:
//послали мессагу установить Max для progressBara и текст комментария
SendMessage(ProgressForm,WM_SetProgressMax,FileList.Count-1,Integer(sFirstMessage));
for i:=0 to FileList.Count-1 do
...
SendMessage(ProgressForm,WM_UpdateProgressBar,i,Integer(FileList.Strings[i]));
а в WndProc формы с прогрессом:
case Message.Msg of
...
WM_UpdateProgressBar : begin
ProgressBar.Position:=Msg.wParam;
Label.Caption:=String(msg.lParam);
Repaint
end
else
Inherited WndProc(Message)
end...
Alex_Sudakov (2001-12-28 17:58:00) [2]И не забываем делать Application.ProgressMessages
Voron (2001-12-28 14:31:00) [3]В процедуре вышеуказанного переименования, там ведь цикл какой-то, да. В этом цикле оцениваем сколько времени осталось, соответсвующим образом влияем на ProgressBar.
troits (2001-12-28 14:28:00) [4]Можно вынести процедуру обработки файлов в отдельный TThread,
и из него, с помощью Synchronize, изменять значения ProgressBar -а. Потом , по OnTerminate потока, закрывать модальное окно.