2014-09-05 46 views
4

我有一个TDrawGrid,想要处理点击单元格和用鼠标滚轮滚动单元格的方式略有不同:当用鼠标滚轮滚动时,视图应以选定单元格为中心,只需单击单元格,视图不会移动(因为那会让人困惑)。德尔福:如何检查是否有任何鼠标按钮被按下 - 鼠标事件之外?

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

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

+0

有趣的是,使用滚轮滚动并不会触发OnSelectCell,所选单元根本不会改变。 – 2014-09-05 20:43:31

回答

7

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

+1

+1包括“如果返回val是否定的”评论和解释! :) – Robin 2014-09-05 08:47:29

相关问题