【问题标题】:Delphi: How can I check if any mouse buttons are pressed - OUTSIDE of a mouse event?Delphi:如何检查是否按下了任何鼠标按钮 - 在鼠标事件之外?
【发布时间】:2014-09-05 08:23:58
【问题描述】:

我有一个 TDrawGrid 并且想要处理单击单元格和使用鼠标滚轮滚动单元格的处理方式略有不同:当使用鼠标滚轮滚动时,视图应以所选单元格为中心,当只需单击一个单元格时,视图不应移动(因为那会令人困惑)。

使用鼠标滚轮滚动会触发OnSelectCell 事件。单击单元格首先触发OnSelectCell,然后触发OnMouseDown。所以我需要弄清楚OnSelectCell 是否被鼠标点击触发。最简单的方法(我能想到的)是检查当前的鼠标按钮状态。

OnSelectCell 不附带任何TMouseButtonTShiftState 参数。那么如何查询鼠标按键状态呢?

【问题讨论】:

  • 有趣,这里用滚轮滚动不会触发 OnSelectCell,所选单元格根本不会改变。

标签: delphi delphi-2007


【解决方案1】:

使用GetKeyState 传递VK_LBUTTON 来识别鼠标主按钮。如果返回值为负数,则当系统生成导致OnSelectCell 事件被触发的输入消息时,按钮处于关闭状态。

【讨论】:

  • +1 用于包含“如果 return val 为负”的注释和解释! :)
猜你喜欢
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多