Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
Семен Сорокин   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
3-38708
AlexMan
2004-01-22 08:24
2004.02.13
Error


3-38696
sohat
2004-01-22 09:01
2004.02.13
ADO для Firebird ?


3-38717
DelphiNew
2004-01-22 10:53
2004.02.13
Индексы


14-39012
kingdom2000
2004-01-26 23:38
2004.02.13
Пароль в IE


1-38862
АндрейР
2004-02-02 10:53
2004.02.13
Word.Application





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский