TREEVIEW

USUARIO.EXCLUIDOS 26/11/2006 21:59:33
#186314
Ola bem encontrei um trieview e queria aproveitá-lo , confesso que não é meu mas está interessante, bem ele permite adicionar alguns nodes, acho que é isso que se chama , ou seja uma classe dentro da principal, mas que todo o conteúdo é salvo num ficheiro *.bnd . Bem o problema é que ele dá erro quando ao remover o último node ficando só o da raiz ele dá um erro :
object variable or with block variable not set , bem vou colocar o código :

Private Sub mnuFileSave_Click()
Dim iFile As Integer
Dim nCurNode As Node
Dim nNextNode As Node

If tvwBinder.Tag <> "null" Then
If tvwBinder.Tag = "" Then
mnuFileSaveAs_Click
End If

iFile = FreeFile

Open tvwBinder.Tag For Output As #iFile

Print #iFile, "[Binder]" & tvwBinder.Nodes.Item(1).Text

Set nCurNode = tvwBinder.Nodes.Item(1).Child

'search for children until there are no more,
'then go to next sibling and repeat

tá a dar erro aqui no while :

Do While (Not nCurNode = tvwBinder.Nodes.Item(1)) And (Not nCurNode Is Nothing)
Set nNextNode = Nothing

If nCurNode.Tag = SECT_TAG Then
Print #iFile, "[Sect]" & nCurNode.Text & "[Key]" & nCurNode.Key & "[Parent]" & nCurNode.Parent.Key
Else
Print #iFile, "[Doc]" & nCurNode.Text & "[Key]" & nCurNode.Key & "[Loc]" & nCurNode.Tag & "[Parent]" & nCurNode.Parent.Key
End If

If Not nCurNode.Child Is Nothing Then
Set nNextNode = nCurNode.Child
ElseIf Not nCurNode.Next Is Nothing Then
Set nNextNode = nCurNode.Next
Else
Set nNextNode = nCurNode.Parent
If Not nNextNode Is Nothing Then
While (nNextNode.Next Is Nothing)
If Not nNextNode = tvwBinder.Nodes.Item(1) Then
Set nCurNode = nNextNode
Set nNextNode = Nothing
Set nNextNode = nCurNode.Parent
Else
Exit Do
End If
Wend

Set nCurNode = Nothing
Set nCurNode = nNextNode
Set nNextNode = nCurNode.Next
Else
Exit Do
End If
End If

Set nCurNode = nNextNode
Loop

Set nNextNode = Nothing
Set nCurNode = Nothing

Close #iFile

AddMRUItem tvwBinder.Tag

bChanged = False

MsgBox "Binder saved.", vbInformation, "Saved"
Else
tvwBinder.Tag = ""
End If
End Sub



bem sei que dá muito mais trabalho usar o dos outros pq cada um tém o seu estilo mas enfim. Mas ás vezes acho que na vale a pena ....
USUARIO.EXCLUIDOS 05/12/2006 16:30:36
#188140
Resposta escolhida
Este erro se dá quando temos uma variável objet e não utilizamos as palavra chave new para declará-la

'Voce iguala uma variável com algo que nao mais existe aqui ...
Set nCurNode = tvwBinder.Nodes.Item(1).Child

'E tenta utilizar mesmo não existindo
Do While (Not nCurNode = tvwBinder.Nodes.Item(1)) And (Not nCurNode Is Nothing)

Variável object não inicializada.

Vai precisar criar um desvio nesta exceção.
Tópico encerrado , respostas não são mais permitidas