タイトル | : TreeView MouseMoveで、当該ノードでの x ,y 位置 |
記事No | : 14912 |
投稿日 | : 2010/09/08(Wed) 12:41 |
投稿者 | : ima |
お世話になります。 ( WinXP VB6 sp6 )
ツリービューのノード間に線を引くには http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200506/05060109.txt
に有るようなことをコーディングしました。
下記手法では、HitTest メソッドでノードを特定するため、MouseMoveで 対象ノード内のどの部分(上とか下とか)を動かしても、そのノードの下に線を引く事になります。
Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) にて、
TreeView1.HitTest(x, y).Selected = True hItem = SendMessage(TreeView1.hwnd, TVM_GETNEXTITEM, TVGN_CARET, ByVal 0) lpData(0) = hItem Call SendMessage(TreeView1.hwnd, TVM_GETITEMRECT, True, lpData(0)) r.Left = TreeView1.Left + lpData(0) r.Top = TreeView1.Top + lpData(1) r.Right = TreeView1.Left + lpData(2) r.Bottom = TreeView1.Top + lpData(3) With picSplitter .Top = r.Bottom + 1 .Left = r.Left .Width = r.Right - r.Left .Visible = True End With
それを出来れば、 対象ノード内の上半分の領域では、対象ノード内の上に線を描画し、 対象ノード内の下半分の領域では、対象ノード内の下に線を描画する。
と言ったことを出来ればと考えています。
⇒ 最終的な目的は、FirstSiblingノードの上にも線を引き、対象ノードを先頭ノード の上に Drag & Drop で移動を行いたいのです。
つまり、MouseMoveイベントでの x ,y 位置をTreeView基準でなく、ノード基準で 判断できないか? 或いは、当該ノードの上半分にいるのか下半分にいるのかを 判断したいのです。
宜しくお願いします。
|