掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ツリービューのノードを閉じたときに選択されてしまうのを防ぐには? (ID:121595)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
再現しました。えーと、どうしましょうかねぇ。 スクロール後にクリックが有効な Node 上にカーソルが移動する 状態で発生しますね。 エクスプローラの場合、展開(Expand)の時は、そのフォルダが 表示の一番上部に移動するようスクロールするけど、閉じる時に スクロールしませんね。 [VB6.0]のツリービューでもスクロール後にクリックが有効でない 場所に移動すれば問題ない…(例えばサンプルで root も root2 も 展開した後、root2 の操作では起こらない)。 うーん。色々と制御方法はあると思うけど、例えば [VB6.0] Option Explicit Private mSelectNode As Node Private mCollapse As Boolean Private Sub Form_Load() Dim i As Integer '///////////////////// ' Form1.Height = 8000 ' Form1.Width = 8000 Me.Height = 8000 Me.Width = 8000 '///////////////////// TreeView1.Top = 0 TreeView1.Left = 0 TreeView1.Height = 7000 TreeView1.Width = 7000 TreeView1.LineStyle = tvwRootLines '///////////////////// TreeView1.ImageList = ImageList1 '///////////////////// Call TreeView1.Nodes.Add(, , "top", "top", "Folder") Call TreeView1.Nodes.Add(, , "top2", "top2", "Folder") Call TreeView1.Nodes.Add("top", tvwChild, "root", "root", "Folder") Call TreeView1.Nodes.Add("top", tvwChild, "root2", "root2", "Folder") For i = 0 To 50 Call TreeView1.Nodes.Add("root", tvwChild, "a1" & i, i & "1000", "Folder") Next For i = 0 To 50 Call TreeView1.Nodes.Add("root2", tvwChild, "a2" & i, i & "1000", "Folder") Next For i = 0 To 50 Call TreeView1.Nodes.Add("a11", tvwChild, "41000\a" & i, i & "2000", "Folder") Next End Sub Private Sub TreeView1_Click() mCollapse = False End Sub Private Sub TreeView1_Collapse(ByVal Node As MSComctlLib.Node) Debug.Print "Collapse " & Node mCollapse = True End Sub Private Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node) Debug.Print "Expand " & Node End Sub Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Debug.Print "NodeClick " & Node If mCollapse _ And True Then '↑ここにノードが子でない条件が必要 mCollapse = False mSelectNode.Selected = True Exit Sub End If Set mSelectNode = Node End Sub ただし、今度は操作しているノードの下(子)に選択フォルダがある時に 閉じませんの、そこを調整する必要があります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.