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