VB Tree View

schieflo

Grünschnabel
hallo!

hab da folgendes problem: ich will die angehackten aktivitäten vom tree in eine listbox übergeben; möchte aber wenn die "ästchen" eines "astes" alle angehackt sind nur den ast übergeben; wenn nicht alle ästchen angehackt sind dann sollten nur die angehackten ästchen übergeben werden;ich habe das aber nicht geschafft da es ja beliebig viele äste und ästchen geben wird;
nochmal kurz zusammengefasst: ich muss irgendwie überprüfen ob alle ästchen eines astes angehackt sind...wenn ja sollt nur der name des astes übergeben werden...wenn nein dan nur die ästchen

hoffe ihr könnt mir weiterhelfen!
mfg
 

Anhänge

wie dein Projekt auch musst du deine nodes und subnodes rekursiv durchsuchen

Code:
Private Sub Uebernehmen_Click()
    Dim x As Node
    For Each x In TreeViewCTL.Nodes
        If x.Checked = True Then
            Debug.Print x.Key ' angehagt rüberblasen
        Else
            If allsubchildrenChecked(x) Then
                Debug.Print x.Key ' alle subchildren checked
            End If
        End If
    Next x
End Sub
Private Function allsubchildrenChecked(x As Node) As Boolean
    Dim s As Node
    Dim blnChecked As Boolean
    blnChecked = False
    For Each s In x
        If s.Checked Then
            ' angehagt rüberblasen
        Else
            If allsubchildrenChecked(x) Then
                Debug.Print x.Key ' alle subchildren checked
            Else
                blnChecked = False
            End If
        End If
    Next s
    allsubchildrenChecked = blnChecked
End Function

ich hab das mal so schnell runtergeschrieben "ohne zu testen" aber da ich den restlichen code von dir gesehen habe solltest du das verstehen :D


Gruß bb
 
Zurück