一个TreeView拖放的怪问题(200分)

  • 主题发起人 主题发起人 larryuan
  • 开始时间 开始时间
L

larryuan

Unregistered / Unconfirmed
GUEST, unregistred user!
新建一个TreeView,把它的DragMode设为dmManual,以便控制哪些项可以被拖动,
在它的MouseDown事件中加入:
TTreeView(Sender).BeginDrag(False, 100);
是为了实现在拖动一段距离后鼠标才变成DragCursor,而不是立即就便。
运行,拖动效果一切正常!

现在,加入一个ImageList,并关联上TreeView,这时TreeView的节点上就有图片了,
再次运行,当鼠标按下TreeView节点时,鼠标立即就变成了DragCursor,
然后鼠标拖动一段距离,但此时鼠标停在按下的节点处不动,
直到拖动了100个象素之后,鼠标突然出现在100个象素之外,效果极其恶心。

我不希望当鼠标按下时就改变鼠标指针,因为此时也许是进行别的操作,而不是拖动。

有高手能解决吗?
 
保存最后MouseDown的时鼠标位置,在MouseMove中判断当前鼠标是否已经按下
并且当前鼠标位置是不是在100个象素之外,然后开始拖放。
 
先谢谢帮我up

to qianwt:
这倒是一个迫不得已的解决方法,但delphi的BeginDrag的两个参数就没用了吗?
是不是delphi的一个bug呢?
 
我先试一试再说,
 
后退
顶部