Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: CL | DM;

Вниз

Как различить одинарный и двойной клик.   Найти похожие ветки 

 
Семен Сорокин ©   (2004-02-04 17:46) [0]

Ситуация следующая: есть два обработчика один отрабатывает при одиночном клике (компонента TChart использую MouseDown), а второй обработчик стоит на DoubleClick. Дело в том что при двойном щелчке мы попадаем сначала в обработчик первого события, а затем второго. Хотелось бы в случае двойного клика выполнять только его обработчик. У кого будут какие нибудь идеи? Можно, конечно, воспользоваться таймером, но уж как-то не хочется :), может есть более красивые решения?
С уважением.


 
Anatoly Podgoretsky ©   (2004-02-04 17:56) [1]

Именно таймер, запрещать при двойном клике, при срабатывании одинарный клик. Время клика можно получить от системы.


 
Семен Сорокин ©   (2004-02-04 18:11) [2]

Спасибо, значит буду делать с помощью таймера.


 
Семен Сорокин ©   (2004-02-04 18:54) [3]

Уважаемые, может быть кто-нибудь помнит как можно найти максимальное время двойного щелчка (которое устанавливается в свойствах мыши)?
Искал в MSDN, нашел только для VisualFoxPro, наверное плохо искал. Ткните пожалуйста носом :)


 
Семен Сорокин ©   (2004-02-04 19:22) [4]

Вопрос снят, нашел.
var
Keys: TMouseKeys;
...
Keys.cbSize := sizeof(Keys);
SystemParametersInfo(SPI_GETMOUSEKEYS, sizeof(Keys), @Keys, 0);


 
Юрий Зотов ©   (2004-02-04 19:25) [5]

GetDoubleClickTime


 
Семен Сорокин ©   (2004-02-04 19:44) [6]

Юрий Зотов © (04.02.04 19:25) [5]
GetDoubleClickTime

кто бы мог подумать :))
спасибо.


 
Юрий Зотов ©   (2004-02-04 19:47) [7]

Но вообще-то, проблема непонятна. Во-первых, зачем сажать обработку одиночного клика на OnMouseDown, когда есть уже готовый OnClick? Во-вторых, в OnMouseDown приходит ShiftState, а в нем есть уже готовый ssDouble и остается только его проверить.

VCL уже все разрулила сама, зачем же дублировать обработку?


 
Anatoly Podgoretsky ©   (2004-02-04 19:48) [8]

Семен Сорокин © (04.02.04 19:44) [6]
:-)
Всегда советую, сначала попробовать перевести на ангельский.


 
Семен Сорокин ©   (2004-02-04 20:04) [9]

Во-первых, зачем сажать обработку одиночного клика на OnMouseDown, когда есть уже готовый OnClick?
потому как есть там Shift из которых я вытаскиваю модификаторы (про GetKeyState помню :), к тому-же OnClick также срабатывает перед OnDoubleClick.
Во-вторых, в OnMouseDown приходит ShiftState, а в нем есть уже готовый ssDouble и остается только его проверить.
OnMouseDown при DoubleClick происходит дважды и ssDouble появляется на втором нажатии, при первом его нет => происходит событие.
С уважением.



Страницы: 1 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-38892
_Dmitry_
2004-02-04 15:42
2004.02.13
Форма внутри потока


14-39070
iudjen
2004-01-23 21:40
2004.02.13
по истечении 30 дней программа не работает если не ввел пароль


9-38662
AQUALITY
2003-07-30 06:39
2004.02.13
Слежение за спец ударами


7-39118
Cash
2003-11-30 00:39
2004.02.13
Поиск в папках и подпапках


6-38980
Evgeniy34
2003-12-11 07:41
2004.02.13
Проблемка с подключением к сети