Estou com duvida sobre a possibilidade do treeview poder listar todos os objetos de uma determinada pasta de dados do elipse. A ideia seria listar todos os meus XO e a partir da seleção de um deles mostrar propriedades pertinentes a operação. Portando a dúvida esta em como eu acessaria a pasta de dados e a forma do script que deveria utilizar para isto (já vi o exemplo mas não o compreendi muito bem).
O script abaixo insere todos os objetos da pasta Dados:
Sub TelaInicial_OnShow()
Set TreeView1 = Screen.Item("TreeView1")
'limpa qualquer nó criado
TreeView1.Nodes.Clear
For each objs in Application.GetObject("Dados")
if TypeName(objs) = "XOTeste" then
Set a = TreeView1.Nodes.Add( , , , objs.name)
a.Expanded = True
a.Bold = True
a.Checked = True
end if
next
End Sub
Para retornar alguma propriedade específica do objeto selecionado, supondo que o XO possui a Propriedade1 criada, uma alternativa seria a seguinte:
Sub TreeView1_NodeClick(Node)
msgbox Application.GetObject("Dados."& Cstr(SelectedItem)).Propriedade1
End Sub
Bom dia Délio! Desculpe a demora no retorno.
Não consegui visualizar a listagem dos itens… fiz exatamente como o descrito. Li em outro tópico sobre a compatibilidade com versões mais novas do Windows e office. Poderia ser esse o problema? Na minha máquina possuo o office 365 e win10. (Tive que registar manualmente MSComctLib)
Fernando,
Você possuía dois erros no script.
Primeiramente, a sua pasta DADOS possui tags internos, então em TypeName você deve adicionar “InternalTag”, e não o nome do XObject.
Ao adicionar o nome dos objetos em TreeView1.Nodes.Add, o argumento estava incorreto.
Segue script alterado:
Set T reeView1 = Item(“TreeView1”)
TreeView1.Nodes.Clear
DIM OBJS
For each OBJS in Application.GetObject("DADOS")
'teste de objetos encontrados
MsgBox("aaa")
if TypeName(objs) = "InternalTag" then
Set a = TreeView1.Nodes.Add ( , , , objs.name)
a.Expanded = True
a.Bold = True
a.Checked = True
'teste de condicao
MsgBox("bbb")
end if
next