VB6 TreeView 選択ノード下の全階層を展開するには?

解決


expand  2006-01-24 13:58:32  No: 129790

VB6 TreeViewコントロールで、既に作成されたツリーの中から、選択されたノードが持つ全ての階層の子ノードを展開するにはどのようにしたら宜しいでしょうか?

以下だと、1階層下の子ノードだけしか展開しません。
    Dim objNode As Node
    For Each objNode In TreeView1.Nodes
        If (objNode Is TreeView1.SelectedItem) Then
            objNode.Expanded = True
        End If
    Next


特攻隊長まるるう  2006-01-24 18:00:29  No: 129791

過去ログ検索『Expanded』でどうぞ。


expand  2006-01-24 19:59:15  No: 129792

過去ログの紹介、ありがとうございます。

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200401/04010145.txt
にある、oku さんの再帰処理を使用したソースで、できました。

Private Sub Command1_Click()
    Call ExpandedSubNodes(TreeView1.SelectedItem)
End Sub

Private Sub ExpandedSubNodes(ByVal BaseNode As Node)
    If Not BaseNode Is Nothing Then
        Dim objNode     As Node
        If BaseNode.Children > 0 Then
            BaseNode.Expanded = True
        End If
        Set objNode = BaseNode.Child
        Do Until objNode Is Nothing
            Call ExpandedSubNodes(objNode)
            Set objNode = objNode.Next
        Loop
    End If
End Sub

これで完璧ですが、勉強のために伺います。
ExpandedSubNodes()の様な、再帰呼び出しのプロシージャを別に用意せずに、Command1_Click()内で完結する方法ってあるんでしょうか?


特攻隊長まるるう  2006-01-24 20:18:50  No: 129793

過去ログ検索『TreeView』にあるサンプルに全て目を通して
理解できる実力をつければ、おのずと道は開かれますが…
『勉強のために』という言葉は買うけど、勉強って↑みたいな
ことでしょ?他人に聞くのは勉強じゃないよ。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200511/05110165.txt
>For Each N In TreeView1.Nodes
>  If N.Parent Is Nothing Then
>    '処理
>  End If
>Next
のループでできない?


特攻隊長まるるう  2006-01-24 20:23:49  No: 129794

…ってゆーか質問のコードに戻るなw
>        If (objNode Is TreeView1.SelectedItem) Then
なんでこんな条件にしてんの?条件のければ
良いだけじゃないの?


expand  2006-01-24 21:14:11  No: 129795

> なんでこんな条件にしてんの?
言われてみると、質問のコードは、
TreeView1.SelectedItem.Expanded = True
と、同じことでした。

> 条件のければ良いだけじゃないの?
条件を除くと、ルート以下の全ノードが展開されます。

> 他人に聞くのは勉強じゃないよ。
と言う指摘があったので、質問を取り消し、自力解決を目指します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加