加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 05:23:41 所属栏目:大数据 来源:网络整理
导读:我使用了许多滚动控件:TTreeViews,TListViews,DevExpress cxGrids和cxTreeLists等。当鼠标滚轮旋转时,无论鼠标光标在什么控件上,焦点控件都接收输入。 如何将鼠标滚轮输入指向鼠标光标所在的任何控件? Delphi IDE在这方面非常好。 解决方法 尝试重写您
我使用了许多滚动控件: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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读