На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Разработка баз данных / Как сделать ProgressBar, отображающий ход события Query.Open? Сделать домашней страницей Добавить в избранное Написать писмо

Как сделать ProgressBar, отображающий ход события Query.Open?


Влад   (22.04.01 15:53)

Как сделать ProgressBar, отображающий ход события Query.Open?




Александр   (23.04.01 08:19)

никак IMHO. ну приблизительно можно по статистике выполнения запроса(из предположения, за сколько он раньше выполнялся, за столько и сейчас).
А вообще-то все запросы должны выполнятся за время не более 1-5 сек - если правильно составить запрос, проиндексировать и т.п.




KSergey   (23.04.01 08:31)

Это возможно, если использовать ADO-компоненты для доступа к данным. Там такое реализовано.




Алексей   (23.04.01 11:01)

Да, запрос должен работать быстро. Но если вопрос поставить немного по другому.
Что если скажем, вам надо отобразить процесс формирования пребольшого отчета со сложным алгоритмом построения, кучей разных выборок, сравнейний и проверок, это что тоже должно уместится в 1-5 сек.
Посмотри пример из Delphi
C:\Program Files\Borland\Delphi5\Demos\Db\Bkquery
там показано как сделать "фоновый" запрос.
Если использовать БДЕ, то  может быть полезна
Callback функция. Обрати внимание на cbCANCELQRY




Александр   (23.04.01 12:09)

Посмотрел. Ну и что?
Ход события query.Open все-равно отобразить нельзя!
А при чем тут фоновый процесс?
и cbCancelCRY и процесс позволят прервать запрос, но не показать ProgressBar, а все потому, что не знаем сколько он будет выполнятся всего!-Ведь вопрос именно в этом.
А двигать-то прогресс бар как раз можно в переллельном потоке.
Проблема в том, что невозможно узнать масштаб этого прогресс бара ДО выполнения запроса




Dead Moroz   (23.04.01 12:25)

При достижении maxvalue начинай снова. Информативности - полное зиро, зато будешь знать что прога не повесилась.




Алексей   (23.04.01 13:40)

Да и не надо информативности, главное иллюзия для пользователя. Пусть он думает, что все так и надо. Вот например в Internet Explorer тоже есть ProgressBar, и я когда-то думал что он тоже что-то отображает.  




Dead Moroz   (25.04.01 16:19)

Господа, есть предложение. В RX есть такой забавный компонент - RXDice, конкретное назначение коего мне до сих пор не ясно, но не в этом суть. Смысл в следующем: привязать приращение ProgressBar к валюесу этого самого кубика, дабы прогрессбар изменялся при "выпадении" валюеса кубика. Должно получиться забавно. Предлагаю обсудить и, возможно, реализовать (если в этом есть какой-то смысл)




Алексей   (26.04.01 10:55)

Да но помоему RX работает только с БДЕ.




Dead Moroz   (26.04.01 11:32)

Дайсу БДЕ не нужен.
Вместо стандарстного прогресс бара можно взять LEDMeter  из набора Simon (http://www.picsoft.de/), получится красивенько.



---
Из конференции сайта МАСТЕРА DELPHI (delphi.mastak.ru)

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz