Click) and not assigned(FOnDblClick) then OnClick(self); end; WM_LBUTTONDOWN:begin //左键落下,如果单击和双击同时定义,则启用定时器, if assigned(FOnClick) and assigned(FOnDblClick) then begin //以判断是单击还是双击 SetTimer(Handle,1,FDblClickTime,nil); //如果不是同时定义则不响应 FTimer :=True; end; end; WM_LBUTTONDBLCLK :begin //左键双击, if FTimer then begin //如果有定时器,则取消定时器 KillTimer(Handle,1); FTimer:=False; end ; if assigned(FOnDblClick) then OnDblClick(self); //如果定义双击则响应 end; WM_RBUTTONUP : begin //右键弹起,响应菜单 if assigned(FPopupMenu) then begin GetCursorPos(p); FPopupMenu.Popup(p.x,p.Y); end; end; end; msg.Result :=0; end else if msg.Msg = WM_TIMER then begin //定时器结束,响应单击。 KillTimer(Handle,1); //在单击、双击同时定义的情况下,没有双击 FTimer := False; FOnClick(self); end; end;
procedure Register; begin RegisterComponents(''''System'''', [TNotifyIcon]); end;