Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 мар 2024, 09:47

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка в обработчике onDblClick
СообщениеДобавлено: 01 июл 2020, 10:15 
Не в сети

Зарегистрирован: 01 июл 2020, 10:05
Сообщений: 15
В случае если обработчик onDblClick занимает достаточно большое время или вызывает другую форму, компонент TDBGridEh неправильно отрабатывает событие мыши. Такие же проблемы обнаружены при переключении между окнами и ручном режиме DragAndDrop. Ключевой момент значительная задержка между событием и дальнейшей обработкой события TDBGridEh. Допустим есть форма где есть компонент TDBGridEh и у формы стоит обновление данных по событию onActivate. Если в настоящий момент форма не активна и происходит одиночный клик на DBGridEh в этой форме, сначала отрабатывается onActivate а затем DBGridEh передает событие onDblClick, хотя его на самом деле не было.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ошибка в обработчике onDblClick
СообщениеДобавлено: 17 июл 2020, 19:20 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

Пришлите, пожалуйста, более точные данные, как воспроизвести ошибку.

В тестовом примере с событиями DblClick FormActivate ошибка не воспроизводится.

Код:
procedure TForm1.DBGridEh1DblClick(Sender: TObject);
begin
  Memo1.Lines.Add('TForm1.DBGridEh1DblClick');
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Sleep(1000);
end;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Ошибка в обработчике onDblClick
СообщениеДобавлено: 19 июл 2020, 15:19 
Не в сети

Зарегистрирован: 01 июл 2020, 10:05
Сообщений: 15
Добрый день.

Сделал пример и нашел почему это происходит. Причина не в задержке, а в изменении вида указателя мыши.
onActivate обновляет данные в DBGrid и курсор мыши меняет форму.
Screen.Cursor := crHourGlass;
Application.ProcessMessages;
затем возвращается
Screen.Cursor := crDefault;
Изменение формы указателя после клика формирует событие dbl click
Стандартный grid ведет себя так же, скорее всего проблема где-то глубже.

Спасибо за поддержку.
Всего хорошего.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB