Главная страница
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.051 c
14-1091671990
Думкин
2004-08-05 06:13
2004.08.22
С днем рождения! 5 августа


1-1091775212
student__
2004-08-06 10:53
2004.08.22
подсчет секунд


3-1090987909
Ani
2004-07-28 08:11
2004.08.22
Как передать содержимое QuickRep в MsWord?


8-1085399920
ПсихЪ_клон
2004-05-24 15:58
2004.08.22
glColor4f в OpenGL под Delphi


6-1087810454
basic
2004-06-21 13:34
2004.08.22
Чем копировать на удаленном компе