События Click и DblClick в Grid-ах

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

События Click и DblClick в Grid-ах

Сообщение grigoreo »

столкнулся вот с таким казусом , в любом из типов гридов будь то DBGrid или просто StringGrid есть два типа события - двойной клик и одинарный,

но вот как их разделить чтобы при кликах срабатывал либо тот либо этот, получается одиночный клик срабатывает всегда, даже если это был клик из последовательности Двойного клика
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

может быть сравнивать интервал между кликами
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

xcod писал(а):может быть сравнивать интервал между кликами


допустим а как?, вот кликнул ты раз я сравнил время , у первого клика большое, событие одного клика уже сработало я не знаю будет ли второй быстрый клик за первым или не будет...
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

в windows скорость выполнения двойного щелчка хранится в реестре HCU\Control Panel\Mouse параметр DoubleClickSpeed в миллисекундах, по умолчанию вроде 500
так что в зависимости от настройки системы я думаю вам надо плясать
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

xcod писал(а):в windows скорость выполнения двойного щелчка хранится в реестре HCU\Control Panel\Mouse параметр DoubleClickSpeed в миллисекундах, по умолчанию вроде 500
так что в зависимости от настройки системы я думаю вам надо плясать


вопрос не в том какая величина , тут не проблема, а в том как , в принципе разделить эти 2 типа событий, ведь кликая один раз и попадая в обработчик мы заранее не знаем будет ли второй клик... если будет то возможно наступить событие двойного клика а если не будет то будет одинарный клик , но на этапе первого клика мы об этом не знаем...
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

grigoreo в данном случае вы выбрали не верный путь. Обдумайте логику управления заново, исключая данную ситуацию т.к. вы всегда сначала будете получать событие "клик".
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

теперь понял :D
действительно мжт логику поменять
например левая кнопка мыши одно действие, правое другое
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

Mr.Smart писал(а):grigoreo в данном случае вы выбрали не верный путь. Обдумайте логику управления заново, исключая данную ситуацию т.к. вы всегда сначала будете получать событие "клик".

Вроде в дельфи эти события нормально разделялись? Т.е. по даблклику онклик не отрабатывал. Или что-то путаю?
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

dunin писал(а):Вроде в дельфи эти события нормально разделялись? Т.е. по даблклику онклик не отрабатывал. Или что-то путаю?

Нет. Всегда будет срабатывать onClick.

На самом деле, нужно пересмотреть управление.
Либо же замерять время и вызывать DblClick из onClick, что по моему мнению, как то глупо...
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

WAYFARER писал(а):
dunin писал(а):Вроде в дельфи эти события нормально разделялись?...

Нет. Всегда будет срабатывать onClick.

Хм... Проверил. Да, всегда отрабатывает.
Вроде сравнительно недавно дельфи совсем забросил, а уже ничего не помню. Склероз, будь он неладен... :(
Ответить