|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
На форму добавил progressbar microsoft, кнопка по которой запускается подпрограмма, (Считывание из текстового файла(100 мб) в таблицу, действия с таблицей, разные проверки, индексации, сжатие и т.д.), как теперь заставить этот progressbar двигаться? Надо ли для этого установить таймер или есть другие варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 07:53 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
Давно им не пользуюсь, если не путаю там свойство есть "текущее значение", его меняешь - он двигается. Вроде мин/макс можно задать. С ним, как и с любыми внешними контролами, есть проблема: их может не оказаться на компе у пользователя и форма не откроется. Поэтому написал свой прогрессбар и им пользуюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 08:07 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
Да, есть там progressbar.value, min и max,(и refresh, каждый раз наверное обновлять, при изменении значения).. Но чему этот value приравнивать, Т.е. если есть например таблица из 7856 и т.д. записей, через какой интервал записей задавать это значение и делать рефреш.. или можно таймер как-то установить, прошло сколько-то секунд, обновить этот контрол.. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 08:48 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
refresh() не надо, само перерисуется. value должно быть в диапазоне min ... max, там вроде есть еще ограничение по max 32767 если не путаю. Как вариант установить min = 0, max = 100, а value высчитывать например так Код: sql 1.
постоянно вызывать это не стоит, т.к. тормозить будет если много вызовов сделать. Да и смысла нет при незначительном изменении - визуально все-равно ничего не поменяется. Никакие таймеры не нужны, да и не будут они срабатывать если расчет идет. Достаточно какого-нибудь счетчика. Например так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 09:05 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
В общем случае можно такую конструкцию применить Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 09:13 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
Спасибо, это хорошо в случае перебора записей, когда ты знаешь сколько записей...Да, я напишу "идёт работа с таблицей" и активирую этот progressbar, но вначале у меня идёт добавление записей из текстового файла в таблицу, и очень долго(относительно), как я могу вычислять эти step, чтоб видеть что программа не повисла? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 10:04 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
q1w1e1 как я могу вычислять эти step, чтоб видеть что программа не повисла?Отталкиваясь от размера файла в байтах и прочитанных байтов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 10:32 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
С текстовым файлом можно поизвращаться: в lnMax взять размер файла, а lnCnt увеличивать на размер прочитанного, но будет проблема с переводами строк. Можно просто вывести счетчик: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
lnStep подобрать чтобы раз в 1-2 секунды обновлялось ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2017, 10:49 |
|
Алгоритм progress bar
|
|||
---|---|---|---|
#18+
q1w1e1, Если процесс долгий тогда ко всему еще и прогресс бар наложит свое время.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2017, 15:23 |
|
|
start [/forum/topic.php?fid=41&fpage=13&tid=1581881]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 304ms |
total: | 576ms |
0 / 0 |