Тут все закоментировано. Есть вопросы спрашивай. Сделал под Image.
Код:
procedure TForm1.Image1Click(Sender: TObject);
var
Msg: TMsg;
ControlTime: Longword;
begin
Form1.Tag := 0;
// Определение размера контролируемого отрезка времени
ControlTime := GetTickCount + GetDoubleClickTime;
// Ожидание повторного щелчка мышью на контролируемом отрезке
while GetTickCount < ControlTime do
if PeekMessage(Msg, Form1.Handle, WM_LBUTTONDBLCLK, WM_LBUTTONDBLCLK,
PM_NOREMOVE) then
Begin
ShowMessage('Двойной щелчок'); // Обработка событий по двойному щелчку
Form1.Tag := 1;
end;
if Form1.Tag = 1 then
exit
else
begin
ShowMessage('Одинарный щелчок'); // Обработка событий по одинарному щелчку
end
end;