Добавить недостающие узлы из Treeview1 в Treeview2 с VB6 - PullRequest
1 голос
/ 26 октября 2019

Я хочу отсканировать и сопоставить элементы treeview1 в treeview2 и добавить дочерние элементы в treeview2.

Вот мой текущий код:

    Dim FoundIt As Boolean, ii As Integer, ix As Integer
Dim NodX As Node, NodX2 As Node, namme As String
On Error Resume Next

For Each NodX In TreeView1.Nodes
ii = NodX.Index
For Each NodX2 In TreeView2.Nodes
ix = NodX.Index
On Error Resume Next
If NodX.FullPath = NodX2.FullPath Then
If TreeView1.Nodes(ii).Parent.Text = TreeView2.Nodes(ix).Parent.Text Then
If TreeView1.Nodes(ii).Parent.Image = 9 And TreeView1.Nodes(ii).Image = 3 Then
namme = TreeView2.Nodes(ix).Parent.Key
TreeView2.Nodes.Add namme, tvwChild, TreeView1.Nodes(ii).Parent.Child.Text, TreeView1.Nodes(ii).Parent.Child.Text, 5
Pause 0
End If
End If
End If
'Exit For
Next
Next
next

В настоящее время элементы treeview1 могут иметь родительское изображение как9 и child как 3, поэтому на основе этого я хочу добавить все элементы с индексом изображения 3 в treeview2, соответствующий родительскому дочернему разделу для каждого.

введите описание изображения здесь

1 Ответ

0 голосов
/ 26 октября 2019

Вот код, который должен приблизить вас к тому, что вы хотите:

Dim objNode1 As Node
Dim objNode2 As Node
Dim objMatchNode As Node
Dim objChildNode1 As Node
Dim objChildNode2 As Node
Dim iCounter1 As Integer
Dim iCounter2 As Integer
Dim fFound As Boolean

On Error Resume Next

For Each objNode1 In TreeView1.Nodes

    ' Find matching node in Treeview2
    For Each objNode2 In TreeView2.Nodes
        If objNode2.Text = objNode1.Text Then
            ' Match found
            Set objMatchNode = objNode2
            Exit For
        End If
    Next

    If Not objMatchNode Is Nothing Then

        ' Check all children
        If objNode1.Children > 0 Then

            ' Get first Child
            Set objChildNode1 = objNode1.Child

            ' Loop through all children
            For iCounter1 = 1 To objNode1.Children

                If objChildNode1.Image = 3 And objNode1.Image = 9 Then

                    ' Check if it already exists in Treeview2
                    If objMatchNode.Children > 0 Then

                        ' Get first Child
                        Set objChildNode2 = objMatchNode.Child

                        ' Set Found flag to False
                        fFound = False

                        ' Loop through all children
                        For iCounter2 = 1 To objMatchNode.Children

                            ' Check for match
                            If objChildNode2.Text = objChildNode1.Text Then
                                fFound = True
                                Exit For
                            End If

                            ' Get next node
                            Set objChildNode2 = objChildNode2.Next

                        Next

                        If Not fFound Then
                            ' Add to Treeview2
                            TreeView2.Nodes.Add objMatchNode.Key, tvwChild, objChildNode1.Key, objChildNode1.Text, 3
                        End If

                    End If

                End If

                ' Get next node
                Set objChildNode1 = objChildNode1.Next

            Next

        End If

    End If

    ' Give UI some time to do other things
    DoEvents

Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...