Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Бегунок при подключении к базе данных


Автор: AndreyZ53 20.3.2014, 14:08
Всем привет!

Интересует такой вопрос!

Имеется сервер с MS SQL, имеется клиент, написанный на Delphi, который подключается к серверу.

Если сервер недоступен или сеть лежит, когда пользователи запускают программу-клиента, то она открывается, зависает на некоторый промежуток времени и, так как не удалось подключиться к серверу выдает сообщение, что нет подключения к БД.

Вопрос: как лучше всего сделать, когда пользователь запускает программу, появлялся бегунок (типа идет подключения, можно ProgressBar), то есть, чтобы показывалось окно программы и бегунок, который имитировал подключение, но чтобы программа сама не зависала.

Автор: Akella 20.3.2014, 15:56
тогда нужно подключаться к серверу в отдельном потоке

Автор: AndreyZ53 20.3.2014, 16:02
Akella, ммм, а не подскажите хороших примеров по созданию потоков???

Автор: Antimol 20.3.2014, 18:41
В общем вот: http://forum.vingrad.ru/forum/topic-60076.html

Автор: Akella 21.3.2014, 12:59
Потоки - тема иногда непростая для изучения и понимания, так что готовься неделю изучать и экспериментировать.

Добавлено через 2 минуты и 22 секунды
а может и больше или меньше
всё зависит от твоего опыта и сложности задачи

Автор: Bose 21.3.2014, 16:49
Проще при подключении показать окошко с анимированной гифкой (включив свойство отрисовки гифки в отдельном потоке). А подключение продолжать в основном.

Автор: AndreyZ53 24.3.2014, 08:44
Bose, не совсем понял, то есть мне не надо делать свой поток на подключение?

Автор: Bose 25.3.2014, 15:39
Цитата(AndreyZ53 @  24.3.2014,  07:44 Найти цитируемый пост)
Bose, не совсем понял, то есть мне не надо делать свой поток на подключение?

Если ты хочешь в потоке проверять доступна ли БД, то надо.


А если хочешь просто показывать анимированную гифку (чтобы создать иллюзию, что программа не зависла), пока основной поток подключается к БД, то можно и не делать.
п.с. анимированную гифку показать намного проще чем заморачиваться с показом реального прогрессбара из потока

Автор: AndreyZ53 26.3.2014, 17:01
Bose, Еще подскажите тогда.

У меня главная форма, на ее событии OnShow прописано подключение к БД.

Перед подключением к БД я вызываю новую форму, на которой размещен анимированный бегунок, но он и сама анимация зависает на время подключения к БД (если нет связи) и так до тех пор, пока не выдаст сообщение об ошибки подключения.

Как мне можно сделать, чтобы эта анимация не зависала

Автор: Bose 29.3.2014, 02:50
Цитата(AndreyZ53 @  26.3.2014,  16:01 Найти цитируемый пост)
Перед подключением к БД я вызываю новую форму, на которой размещен анимированный бегунок, но он и сама анимация зависает на время подключения к БД (если нет связи) и так до тех пор, пока не выдаст сообщение об ошибки подключения.

Как мне можно сделать, чтобы эта анимация не зависала 

Для анимации использовать http://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvGIFImage - со включенным свойством проигрывания анимации в потоке. Я только не помню, точно ли это был именно TjvGifImage или какой-нибудь другой компонент типа TjvAnimationЧто-нибудь. Но точно помню, что в JVCL был компонент умеющий обновлять анимацию из отдельного потока.

Автор: AndreyZ53 31.3.2014, 07:11
Bose, вроде бы уже получше, но вот нашел такую проблему еще, что если нет связи, то анимация выполняется в своем потоке и не зависает, все отлично. Но вот если я перекрою ее каким-нибудь окном (открою другую программу), то она опять зависает. Это уже не лечиться, без использования потоков???

Автор: Bose 31.3.2014, 08:35
Цитата(AndreyZ53 @  31.3.2014,  06:11 Найти цитируемый пост)
 Это уже не лечиться, без использования потоков???

Увы

Автор: AndreyZ53 31.3.2014, 14:43
Bose, спасибо за помощь, плюсик Вам!

Будем смотреть дальше, либо разберемся с потоками, либо оставим как есть!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)