delphi – 如何直接鼠标滚轮输入控制下光标而不是聚焦?

前端之家收集整理的这篇文章主要介绍了delphi – 如何直接鼠标滚轮输入控制下光标而不是聚焦?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用了许多滚动控件:TTreeViews,TListViews,DevExpress cxGrids和cxTreeLists等。当鼠标滚轮旋转时,无论鼠标光标在什么控件上,焦点控件都接收输入。

如何将鼠标滚轮输入指向鼠标光标所在的任何控件? Delphi IDE在这方面非常好。

解决方法

尝试重写您的表单的MouseWheelHandler方法像这样(我没有彻底测试):
procedure TMyForm.MouseWheelHandler(var Message: TMessage);
var
  Control: TControl;
begin
  Control := ControlAtPos(ScreenToClient(SmallPointToPoint(TWMMouseWheel(Message).Pos)),False,True,True);
  if Assigned(Control) and (Control <> ActiveControl) then
  begin
    Message.Result := Control.Perform(CM_MOUSEWHEEL,Message.WParam,Message.LParam);
    if Message.Result = 0 then
      Control.DefaultHandler(Message);
  end
  else
    inherited MouseWheelHandler(Message);

end;

猜你在找的Delphi相关文章