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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2017, 09:10   #1
Александр545
Новичок
Джуниор
 
Регистрация: 14.08.2017
Сообщений: 1
По умолчанию Прогресс бар

В интернете есть описание по установке прогресс бара в Делфт. И действительно все работает, когда в программе только один прогресс бар.
Когда устанавливается прогресс бар вместе с операцией выполнения какого либо длительного дейсвия., выполняется сначала это действие и после его завершения выполняется прогресс бар. Т.е. нет смысла в такой визуализации выполнения операции!!!
Подскажите, как можно сделать, чтобы прогресс бар действительно отражал процесс выполнения длительного действия. Лучше если это будет ссылка на урок или статью, действительно серьёзную. Уже просмотрел много статей в интернете, но ничего путного не нашёл на эту тему.
Александр545 вне форума Ответить с цитированием
Старый 14.08.2017, 09:33   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Он же не по щучьему велению отображает ход процесса. Для нормального использования нужно:

1. Знать хотя бы примерно количество шагов, на которое можно условно разбить это длительное действие. Это для свойства Max (Min тоже)
2. Иметь возможность вмешаться в код твоего длительного действия, что бы менять номер шага, изменяя свойство Position.

Без этого нормальный прогресс не получится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 14.08.2017 в 09:36.
Аватар вне форума Ответить с цитированием
Старый 14.08.2017, 09:52   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Александр545 Посмотреть сообщение
Подскажите, как можно сделать, чтобы прогресс бар действительно отражал процесс выполнения длительного действия.
Ну вот предположим, нужно проапдейтить стопицот записей в БД. Рассчитываем количество записей (получаем через RecordCount) - это будет максимум прогресс-бара.

Далее решаем, через какое количество записей будем увеличивать прогрес-бар и вставляем в код инкремент для Progressbar.Position.

Пример: в цикле выполняем апдейт, увеличиваем на каждом шаге:

Код:
for i := 0 to RecordCount - 1 do
begin
  // тут действия по апдейту
  inc(ProgressBar.Position);
end;
То же самое, но в процентах: предположим, апдейтим 1000 записей, нужно обновлять прогресс каждые 10% выполнения. Считаем 10%: 1000 * 10 / 100 = 100 запсей.

Увеличение на каждой сотой записи:

Код:
for i := 0 to RecordCount - 1 do
begin
  // тут действия по апдейту
  
  if  (i mod 100 = 0) or (i = RecordCount - 1) then
    ProgressBar.Position := ProgressBar.Position + 10;
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прогресс бар Gudzik11 Общие вопросы Delphi 41 15.05.2013 10:03
Прогресс бар для Three.js dem66 JavaScript, Ajax 3 05.07.2012 15:01
DES, прогресс бар Євгеній Бєлік Общие вопросы Delphi 6 08.11.2011 05:33
Цикл и прогресс-бар А)-(дрей Microsoft Office Excel 4 17.03.2011 18:13