Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизЭкранный курсор crSQLWait Найти похожие ветки
← →
Stager (2004-07-27 15:26) [0]В моей задаче приходится регулярно, с промежутком около 1 c, выполнять SQL-запросы через TQuery. Проблема: на время каждого запроса экранный курсор показывает часы и надпись "SQL". Длительность запросов мизерная, поэтому курсор отвратительно моргает каждую секунду. Нужно, чтобы он НЕ ИЗМЕНЯЛСЯ при запросе. Победить путем развешивания Screen.Cursor := crDefault на все возможные события TQuery не помогло. Подскажите, пожалуйста, как победить эту заразу?
← →
Sandman25 © (2004-07-27 15:27) [1]Для начала надо разобраться, кто и когда изменяет курсор. После этого уже можно будет начать думать :)
← →
Stager (2004-07-27 16:06) [2]Насколько я понимаю, он изменяется где-то в дебрях стандартного Delphi-модуля DB. Попытка это отследить ни к чему полезному не привела, тем более, что буквосочетание Cursor там чаще используется для обозначения не экранного, а DB-курсора.
Подскажите, имеет ли смысл, к примеру, выполнять запрос в отдельном потоке (если, конечно, можно запретить этому потоку взаимодействовать с экраном)?
← →
Sandman25 © (2004-07-27 16:15) [3]Насколько я понял по трассировке, курсор изменяется в
procedure TSession.InitializeBDE;
SetCursor := (GetCurrentThreadID = MainThreadID) and (DBScreen.Cursor = dcrDefault);
if SetCursor then
DBScreen.Cursor := dcrHourGlass;
Получается, что если установить Screen.Cursor в, скажем, crArrow, то изменения не будет.
← →
AlexSV (2004-07-27 16:20) [4]Database1.Session.SQLHourGlass := False ?
← →
Stager (2004-07-27 16:24) [5]
SetCursor := (GetCurrentThreadID = MainThreadID) and (DBScreen.Cursor = dcrDefault);
if SetCursor then
DBScreen.Cursor := dcrHourGlass;
Получается, что если установить Screen.Cursor в, скажем, crArrow, то изменения не будет.
Ничего подобного. Разница между DBScreen.Cursor и Screen.Cursor достаточно велика, чтобы не считать синонимами эти буквосочетания. Из интереса проверил (ну мало ли?) - действительно не работает - моргает курсор, как прежде.
← →
Stager (2004-07-27 16:28) [6]2 AlexSV
Database1.Session.SQLHourGlass := False
Спаситель! С меня большая виртуальная бутылка, спасибо огромное.
← →
Sandman25 © (2004-07-27 16:43) [7][5] Stager (27.07.04 16:24)
Разница между DBScreen.Cursor и Screen.Cursor достаточно велика, чтобы не считать синонимами эти буквосочетания
Из интереса посмотрел, как используется TSession.SQLHourGlass и выяснил, что Вы ошибаетесь.
← →
Anatoly Podgoretsky © (2004-07-27 18:37) [8]Значит спрятал мусор под ковер.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c