const
interval= 500; //максимальный интервал между кликами в милисекундах
var
lastclick:DWORD=0;
procedure OnDblClickProc;
//выполняется когда происходит двойной щелчок
begin
ShowMessage('двойной щелчок');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if lastclick=0 then
lastclick:=GetTickCount
else
begin
if GetTickCount-lastclick<interval then OnDblClickProc;
lastclick:=GetTickCount;
end;
end;
Возможна ли обработка двойного щелчка мышью на кнопке (TButton)?
1. Возможно ли создать обработку двойного щелчка на кнопке?
Дело в том, как известно, устанавливая функции обработки
события для одиночного (OnClick) и для двойного щелчка
(OnDblClick) на кнопке - обработка двойного щелчка
не вызывается, т.е. и не выполняется.
И первое, что может прийти в голову - это, конечно,
перехват интервалов между нажатиями данной кнопки
(и если интервал меньше n милисекунд, то вызывать
функцию для обработки, как бы, двойного щелчка).
Но, тогда возникает второй вопрос:
2. Как корректно перехватывать клики, откуда вызывать
проверку на интервал -из данной кнопки, на форме?
Заранее спасибо за ответ!
2. Сабклассить кнопку и ловить сообщение WM_DBLLCLICK, WM_DBLRCLICK
вот пример обработки двойного щелчка по кнопке
Раздел, вроде, про WinAPI. WM_NOTIFY+NM_DBLCLK.