Ajuda com Treeview

Boa tarde!

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

Boa tarde Fernando,

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

image

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

Para maiores detalhes sobre o objeto Treeview, visualize o artigo e o post abaixo:
http://kb.elipse.com.br/pt-br/questions/2211

1 Like

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)

Bom dia Fernando,

Por gentileza, envie a aplicação para o meu e-mail (delio@elipse.com.br), vou tentar reproduzir o problema.

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
1 Like