德尔福:如何检查是否有任何鼠标按钮被按下 - 鼠标事件之外?
问题描述:
我有一个TDrawGrid,想要处理点击单元格和用鼠标滚轮滚动单元格的方式略有不同:当用鼠标滚轮滚动时,视图应以选定单元格为中心,只需单击单元格,视图不会移动(因为那会让人困惑)。德尔福:如何检查是否有任何鼠标按钮被按下 - 鼠标事件之外?
使用鼠标滚轮滚动会触发OnSelectCell
事件。点击单元格FIRST发射OnSelectCell
,然后点击OnMouseDown
。所以我需要弄清楚OnSelectCell
是否被鼠标点击触发。最简单的方法就是检查当前的鼠标按钮状态。
OnSelectCell
没有附带任何TMouseButton
或TShiftState
参数。那么如何查询鼠标按钮状态呢?
答
使用GetKeyState
传递VK_LBUTTON
来标识主鼠标按钮。如果返回值为负数,则当系统生成导致OnSelectCell
事件被触发的输入消息时,该按钮处于关闭状态。
+1
+1包括“如果返回val是否定的”评论和解释! :) – Robin 2014-09-05 08:47:29
有趣的是,使用滚轮滚动并不会触发OnSelectCell,所选单元根本不会改变。 – 2014-09-05 20:43:31