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.
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.
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