Delphi ListView在鼠标事件中“卡住”

时间:2009-05-18 03:09:28

标签: delphi listview

情况有点难以解释,我会尽力而为。

我有一个ListView,它有一个右键菜单。其中一个菜单项打开一个新的非模态表单。通常用户点击菜单项,新表单显示并且没问题。

但是,如果用户通过单击ListView中没有显示ListItem的区域来显示右键菜单,例如在最后一个ListItem下面,然后单击菜单项,非模态窗体显示,但光标似乎卡在ListView中的左键鼠标按下状态,即非模态窗体位于前面,但是当我移动鼠标,它会在后台ListView中创建那些拖动区域矩形,就像按下鼠标按钮一样。

我尝试过使用各种BringToFront,SetFocus,并尝试使用SendMessage来模拟鼠标点击以避开它,但没有成功。

2 个答案:

答案 0 :(得分:0)

听起来像列表视图没有正确处理WM_CANCELMODE消息,该消息告诉它在鼠标捕获时丢失了焦点。不确定如何解决这个问题,除非发送鼠标信息。

答案 1 :(得分:0)

发现问题。经过进一步研究,ListView实际上是TListView的自定义后代,它有自己的(错误的)处理弹出菜单的方式。

我将它切换为使用TListView的默认TListView.PopupMenu,它可以很好地工作。

感谢Lars Truijens建议构建一个最小的测试应用程序,这使我走向正确的方向。