Главная страница
    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.46 MB
Время: 0.034 c
1-1092090365
mouse_web
2004-08-10 02:26
2004.08.22
Заставка перед загрузкой программы


6-1087536809
leonidus
2004-06-18 09:33
2004.08.22
Щелчки в TWebBrowser`е


14-1091437316
@Ujin
2004-08-02 13:01
2004.08.22
Подскажите как на VB записать "procedure Proc (Sender: TObject);"


1-1092119811
Fynjy
2004-08-10 10:36
2004.08.22
Фокус


14-1091775375
zamkom
2004-08-06 10:56
2004.08.22
Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский