Typen unverträglich?

Hallo zusammen,

bin VB-Anfänger und ärgere mich gerade mit dem
TreeView-Control unter VB6 herum. Folgender Code
aus dem Kofler-Buch abgetippt führt bei mir zu der
Fehlermeldung „Typen unverträglich“:

Sub TotalExpandTree(n As Node)
 Dim cn As Node
 If n.Children \> 0 Then
 Set cn = n.Child
 While Not cn Is Nothing
 TotalExpandTree cn
 Set cn = cn.Next
 Wend
 End If
End Sub

Sub Command1\_Click()
 'die folgende Zeile erzeugt den Fehler
 TotalExpandTree (TreeView1.Nodes.Item(1)) 
End Sub

Das Direktfenster sagt:

?TypeName(TreeView1.Nodes.Item(1))
INode

Deshalb hab ich auch schon alle möglichen Objektdeklarationen
ausprobiert Object, Node, INode und MSComctlLib.Node
aber nichts hilft.

Wer weiss Rat???

Ratlose Grüsse,
-Andreas.

Hallo

Wenn ich davon ausgehe, dass die Funktion nichts anderes macht, als
alle Knoten in der Baumansicht zu öffnen, wird die folgende Funktion
sicher Abhilfe schaffen:

Private Sub ExpandTree()
 Dim nodItem As Node
 For Each nodItem In trvTree.Nodes
 nodItem.Expanded = True
 Next
End Sub

Private Sub cmdExpand\_Click()
 ExpandTree
End Sub

Das obenstehende Beispiel setzt natürlich voraus, dass die
Baumansicht den Namen „trvTree“ und die Schaltfläche den Namen
„cmdExpand“ trägt.

Mit freundlichen Grüssen

Samuel

Team: Name entfernt

Hi Andreas!

Die Antwort von Samuel scheint im Moment dein Problem zwar zu lösen, Du kommste aber dennoch nicht daran herum Dir die Übergabe von Parametern an Prozeduren anzusehen.

Hier wird der Wert als Kopie im Speicher an Die Prozedur übergeben. Du solltest prinzipiell immer ByVal vor deine Parameter Deklaration schreiben :
Sub MyProz(ByVal MyParam as String)

End sub

Hier wird der Wert nur als Pointer übergeben. Das bedeuted auch, daß deiner Type 100%ig übereinstimmen müssen:
Sub MyProz(MyParam as string)
End Sub

oder so :

Sub MyProz(ByRef MyParam as string)
end sub

Ciao
Mario