Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.22;
Скачать: CL | DM;

Вниз

Экранный курсор 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.052 c
1-1091948146
k-sergey
2004-08-08 10:55
2004.08.22
Про поток и TImage


14-1091693691
kingdom
2004-08-05 12:14
2004.08.22
Ищу ресурс по C/C++ такой же классый как Мастера Delphi ))


9-1083352477
MrAngel
2004-04-30 23:14
2004.08.22
FDirect3D._Release - какой правильный спосоп освобождения обьекта


1-1092090365
mouse_web
2004-08-10 02:26
2004.08.22
Заставка перед загрузкой программы


3-1091042715
GanibalLector
2004-07-28 23:25
2004.08.22
зависание приложения при выполнении запроса