Возврат курсора по умолчанию после выполнения запроса
Почему мышиный курсор не возвращается обратно (не становится
обычной стрелкой) после выполнения запроса?
При выполнении открытого запроса, Delphi изменяет для вас курсор, и произойти
это может даже в середине события, как, например, при нажатии на кнопку.
Приведенный ниже пример отобразит курсор в виде иконки песочных часов (SQL
Hourglass Icon) после того, как вы закроете окно с сообщением. При этом мышь
будет вести себя так, как будто находится в режиме "стрелки".
// Добавьте к обработчику события нажатия кнопки,
// использование запроса при этом не имеет значения
// Select * from Customer (в IBLocal)
with query1 do
begin
close;
open;
showmessage(IntToStr(RecordCount));
end; // with
|
При наступлении события, Delphi пробует обратно придать курсору тип стрелки
(Arrow), при этом выводится новая форма (диалог showmessage), которая мешает
автоматическому переводу курсора в режим стрелки.
Для решения этой проблемы нужно добавить Application.ProcessMessages прежде,
чем форма будет показана, это позволит обработать все сообщения, скопившиеся в
очереди (и очистить ее), после чего мышиный курсор вновь пример нормальную
форму.
// Добавьте к обработчику события нажатия кнопки,
// использование запроса при этом не имеет значения
// Select * from Customer (в IBLocal)
with query1 do
begin
close;
open;
application.ProcessMessages; // Добавьте эту строку.
showmessage(IntToStr(RecordCount));
end; // with
|
|