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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2008, 22:45   #1
JRcoker
Форумчанин
 
Аватар для JRcoker
 
Регистрация: 18.07.2008
Сообщений: 119
Плохо

Как зделать чтоб TProgressBar показывал процесс загрузки например сокета?..Или удоления большего файла?

Если ктото не вкурсе что такое TProgressBar это строка прогресса типа такаяже как в поцессе установок игр или программ...
Улыбайся...Люди любят идиотов...

Последний раз редактировалось Stilet; 30.07.2008 в 08:28.
JRcoker вне форума Ответить с цитированием
Старый 29.07.2008, 23:43   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Нужно использовать свойства Min, Max и Position компонента TProgressBar. Их привязываете к ходу выполнения длительного процесса.
Arigato вне форума Ответить с цитированием
Старый 29.07.2008, 23:52   #3
JRcoker
Форумчанин
 
Аватар для JRcoker
 
Регистрация: 18.07.2008
Сообщений: 119
По умолчанию

Можна кодом?..
Улыбайся...Люди любят идиотов...
JRcoker вне форума Ответить с цитированием
Старый 30.07.2008, 08:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как зделать чтоб TProgressBar показывал процесс загрузки например сокета?
А тебе известен размер данных передаваемых по сокету?
или ты по частям хочеш качать?
Цитата:
Или удоления большего файла?
А как удалять ты его собрался, Вроде это цельная операция...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2008, 11:46   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Можна кодом?..
Хорошо, допустим мы хотим удалить несколько файлов. На форму кидается компонент типа TProgressBar (допустим, ProgressBar1) и запускается процедуру удаления:
Код:
procedure TForm1.DeleteFiles (FileList: TStringList);
var I: Integer;
begin
  with ProgressBar1 do
  begin
    Min := 0; // минимальное значение прогрессбара
    Max := FileList.Count - 1; // максимальное значение прогрессбара
    Position := Min; // начальная позиция прогрессбара
    for I := 0 to FileList.Count - 1 do
    begin // удаляем все файлы из переданного списка
      if not DeleteFile (FileList[I]) then
      begin // если не удалось удалить файл
        ShowMessage ('Ошибка удаления файла: ' + FileList[I]);
        Exit;
      end; {if}
      Position := I; // меняем позицию прогрессбара
      Application.ProcessMessages; // а это, что бы все намертво не подвисло
    end; {for}
  end; {with}
end; {proc TForm1.DeleteFiles}
Это только пример, конечно, лучше такое делать не в одной процедуре, а скажем удалять по 1 файлу на каждый тик таймера.
Arigato вне форума Ответить с цитированием
Старый 30.07.2008, 12:24   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Если ктото не вкурсе что такое TProgressBar это строка прогресса типа такаяже как в поцессе установок игр или программ...
Спасибо, что объяснили, а то мы не знали )

Можно такое сделать (насчет удаления, копирования файлов/файла), я даже видел такое здесь на форуме, пользуйтесь поиском. Или в Общих вопросах или в Компонентах ищите, точно не помню. Практически такой же вопрос был, и на него ответили.

Arigato, то что вы дали это симуляция, можно же сделать реальный прогресс, независимо от кол-ва файлов.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 30.07.2008, 12:51   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
mutabor
Как ты представляешь прогрессбар для удоления большего файла?
(одного файла)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2008, 13:04   #8
JRcoker
Форумчанин
 
Аватар для JRcoker
 
Регистрация: 18.07.2008
Сообщений: 119
По умолчанию

[DCC Error] Unit2.pas(37): E2003 Undeclared identifier: 'FileList'
[DCC Error] Unit2.pas(37): E2014 Statement expected, but expression of type 'Integer' found
[DCC Error] Unit2.pas(39): E2029 'DO' expected but identifier 'Count' found
[DCC Error] Project2.dpr(5): F2063 Could not compile used unit 'Unit2.pas'

Выдал мне кучу ошибок...
Улыбайся...Люди любят идиотов...
JRcoker вне форума Ответить с цитированием
Старый 30.07.2008, 13:11   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Как ты представляешь прогрессбар для удоления большего файла?
(одного файла)
Если я ничего не путаю, вроде я видел на форуме такое.

В любом случае, раз проводник это может, сможет и любая программа. При удалении большого файла с медленной флешки такой прогресс есть, с винта очень редко, удаление быстро происходит.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 30.07.2008, 13:29   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Цитата:
Выдал мне кучу ошибок...
Приведенная процедура реализована как метод класса TForm1. Вам нужно добавить заголовок процедуры в раздел описания класса TForm1.
Если у Вас там не TForm1, а TForm2 - действуйте аналогично
Arigato вне форума Ответить с цитированием
Ответ


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