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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2007, 15:12   #1
wolk
Новичок
Джуниор
 
Регистрация: 21.03.2007
Сообщений: 1
Вопрос сделать так, чтобы ProgressBar показывал состояние копирования папки

Как сделать так, чтобы она показывала состояние копирования папки.
wolk вне форума Ответить с цитированием
Старый 23.03.2007, 18:13   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Перед собственно копированием просто просматриваем папку и считаем количество файлов, которые будут копироваться. Это число заносим в ProgressBar.Max. Присваиваем ProgressBar.Position:=0.
И копируем. И после копирования каждого файла прибавляем к ProgressBar.Position единичку...
Не забудьте обязательно вставить Application.ProcessMessages после этого присвоения, а то движок может некрасиво дергаться.

Последний раз редактировалось mihali4; 23.03.2007 в 18:18.
mihali4 вне форума Ответить с цитированием
Старый 23.03.2007, 19:39   #3
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

но если в папке будет 1 файл на.... 600метров (фильм), то так до конца на 0% и простоит.
zetrix вне форума Ответить с цитированием
Старый 23.03.2007, 23:25   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

у меня есть код, писал как то копирование файлов по сети - вывод вермени (пройденного, оставшегося), скорость в кбит и т.п.

Код:

....
public
nStartTime,nTimeElapsed,nBps,nKBps : Real;
....

implementation

procedure TForm10.UpdateInfo;

function ss2nn(Seconds: Integer): String;  
var  
  nMin, nSec: Integer;  
begin  
  {Проверяем, меньше чем 1/Min}  
  if Seconds < 60 then Result := '0 мин. ' + IntToStr(Seconds) + ' сек.'  
  else begin  
    {Определяем минуты}  
    nMin := Seconds div 60;  
    {Определяем секунды}  
    nSec := Seconds - (nMin * 60);  
    {Возвращаем результат}  
    Result := IntToStr(nMin) + ' мин. ' + IntToStr(nSec) + ' сек.';
  end;  
end;

begin
    Label2.Caption := formatfloat('Передано: #,##0%',(p.Position/p.Max)*100);
    Label4.Caption := formatdatetime('Прошло: hh:mm:ss',now - starttime);
    // читаем скорость и оставшееся время
    nTimeElapsed := round((GetTickCount - nStartTime) / 1000);
    if nTimeElapsed > 0 then
    begin
    nBps := round(p.Position / nTimeElapsed);
    nKBps := round(nBps / 1024);
    // посчитали выводим
    label3.Caption := formatfloat('Скорость: #,#0 KBps',nKBps);
    if nKBps > 0 then
    label5.Caption := format('Осталось: %s',
        [ss2nn(round(((P.Max - P.Position) / 1024) / nKBps))]);
    end;
    Application.ProcessMessages;
end;
вроде все

забыл p: TProgressBar;
BOBAH13 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать так, чтобы интернет-браузеры не зависали. multik Свободное общение 1 13.08.2008 16:31
Кто мне подскажет как сделать так чтобы... Alexij Общие вопросы Delphi 9 16.06.2008 12:47
Как сделать программу, чтобы она запускалась везде? grenles Общие вопросы C/C++ 3 11.06.2008 21:10
Как сделать чтобы прога не закрывалась vitalik007 Общие вопросы Delphi 8 12.01.2008 23:32
Как сделать чтобы xml файл открывался в Delphi KlErik Общие вопросы Delphi 2 24.05.2007 11:02