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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2011, 21:54   #1
goth_69
 
Регистрация: 02.05.2011
Сообщений: 4
По умолчанию ProgressBar при работе нескольких функций

У меня при нажатии одной кнопки производится последовательное выполнение нескольких функций:

захват кода содержимого html сайта;
выделение ссылок из захваченного html-кода;
создание нового html-файла с этими ссылками;
загрузка этого html-файла на сервер;
и открытие данного файла в броузере;

Как сделать, чтобы, в течении всего времени выполнения этих функций
отображалась бегущая строка ProgressBar ?
goth_69 вне форума Ответить с цитированием
Старый 03.05.2011, 16:33   #2
flexterful
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 39
По умолчанию

Думаю - делить ProgressBar на 4 сектора, и заполнять последовательно.

Код:
  ...
  // инициализируем
 ProgressBar.Min := 0;
 ProgressBar.Max := 400;
  ...
  // Для каждой функции перещитать прогресс в процентах
 fProgress := Round((Index / Count) * 100); // локальная переменная функции
  ...
 ProgressBar.Position := fProgress; // для первой функции
  ...
 ProgressBar.Position := 100 + fProgress; // для второй
  ...
 ProgressBar.Position := 200 + fProgress; // для третей
  ...
 и т.д.
Чего бы тут сделать, дабы ничего неделать?
flexterful вне форума Ответить с цитированием
Старый 03.05.2011, 19:25   #3
goth_69
 
Регистрация: 02.05.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от flexterful Посмотреть сообщение
Думаю - делить ProgressBar на 4 сектора, и заполнять последовательно.

Код:
  ...
  // инициализируем
 ProgressBar.Min := 0;
 ProgressBar.Max := 400;
  ...
  // Для каждой функции перещитать прогресс в процентах
 fProgress := Round((Index / Count) * 100); // локальная переменная функции
  ...
 ProgressBar.Position := fProgress; // для первой функции
  ...
 ProgressBar.Position := 100 + fProgress; // для второй
  ...
 ProgressBar.Position := 200 + fProgress; // для третей
  ...
 и т.д.

Я так понял, что Index и Count - это переменные цикла, а fProgress - это
как бы время выполнения функции в процентах.
А как мне тогда вычислить fProgress, например, для функции загрузки
файла на сервер, в данной функции нет вообще никакого цикла, просто
файл грузится на сервер?

Подскажите пожайлуста.
goth_69 вне форума Ответить с цитированием
Старый 04.05.2011, 10:41   #4
flexterful
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 39
По умолчанию

Цитата:
Сообщение от goth_69 Посмотреть сообщение
Я так понял, что Index и Count - это переменные цикла, а fProgress - это
как бы время выполнения функции в процентах.
Так точно

Цитата:
Сообщение от goth_69 Посмотреть сообщение
А как мне тогда вычислить fProgress, например, для функции загрузки
файла на сервер, в данной функции нет вообще никакого цикла, просто
файл грузится на сервер?

Подскажите пожайлуста.
С етим не работал, может Вы используете упрощённую функцию загрузки, попробуйте полазить по самой функции, может она вызывает другую, которая возвращает прогресс, или в ней самой есть цикл - тогда её просто дополнить - чтобы возвращала
Чего бы тут сделать, дабы ничего неделать?
flexterful вне форума Ответить с цитированием
Старый 04.05.2011, 13:42   #5
goth_69
 
Регистрация: 02.05.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от flexterful Посмотреть сообщение
Так точно



С етим не работал, может Вы используете упрощённую функцию загрузки, попробуйте полазить по самой функции, может она вызывает другую, которая возвращает прогресс, или в ней самой есть цикл - тогда её просто дополнить - чтобы возвращала
Ага, понял, я тоже об этом думал, еще можно как то с таймером придумать, чтобы отсчитывало время выполнения функции и затем в соотвестствии с этим временем увеличивать значение
ProgressBar.Position, но пока не знаю как это сделать.

Но все равно вы мне очень помогли, спасибо большое !!!
goth_69 вне форума Ответить с цитированием
Старый 04.05.2011, 17:09   #6
flexterful
Пользователь
 
Регистрация: 22.08.2008
Сообщений: 39
По умолчанию

А сколько времени занимает работа функции загрузки?
Если до секунды, то вполне логично :

Код:
fProgress := 0; // после чего засылаем данные в ProgressBar
 ...
<вызов функции>
 ...
fProgress := 100; // после чего засылаем данные в ProgressBar
Чего бы тут сделать, дабы ничего неделать?
flexterful вне форума Ответить с цитированием
Старый 04.05.2011, 17:57   #7
goth_69
 
Регистрация: 02.05.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от flexterful Посмотреть сообщение
А сколько времени занимает работа функции загрузки?
Если до секунды, то вполне логично :

Код:
fProgress := 0; // после чего засылаем данные в ProgressBar
 ...
<вызов функции>
 ...
fProgress := 100; // после чего засылаем данные в ProgressBar
Нет не до секунды, намного больше, где-то около 20-30 секунд.
goth_69 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
progressbar при загрузке win xp Pein95 Мультимедиа в Delphi 7 03.05.2011 23:58
Применение нескольких функций caen21rus Общие вопросы C/C++ 6 01.06.2009 18:23
Применение нескольких функций caen21rus Общие вопросы C/C++ 3 28.05.2009 15:35
Реализация функций Rexx по работе со строками в VBA tae1980 Microsoft Office Excel 19 17.03.2009 11:05
Копирование нескольких файлов + ProgressBar AngelOfDeath Общие вопросы Delphi 4 28.05.2008 14:57