Obter Valor da Propriedade XObject

Boa tarde,

Para as instâncias AnaDados_XXX gostaria de salvar os valores que estão nas propriedades Prop1 e Prop2. Há alguma maneira de pega-los via script?

@Shay, boa tarde.

As propriedades das instâncias de XObjects podem ser ou associadas a objetos de tela (ou outros objetos) normalmente como se fossem tags ou via script pode-se retornar o valor como tags também.

Caso não seja isso, por favor, poderia detalhar?

Sds.

@Luiz,

O objetivo é exibir todas as analógicas cadastradas.

Preciso de algo que vai “varrer” todas as instâncias do tipo AnaDados, do servidor, e retornar uma lista

001_Ana001.Prop1 e Ana001.Prop2
002_Ana002.Prop1 e Ana002.Prop2

140_Ana140.Prop1 e Ana140.Prop2

Poderia associar estas propriedades a objetos de tela/ outros. Porém, ainda, não consegui ver uma forma de fazer isso sem que seja uma por uma.

@Shay,

Há algumas formas de “varrer” todas as instâncias do servidor e retornar uma lista. Só depende de como quer aplicá-lo. Aqui há 3 formas de fazer o que precisa:

  1. Utilizando o For Each…Next e retornando os dados num MsgBox, por exemplo:

     Sub CommandButton1_Click()
     Dim folder
     Set folder = Application.GetObject("EntidadesDados.Ana")
    
     For each obj in folder
    
        If TypeName(obj) = "NomeDaClasseDoXObjectXXX_AnaXXX" Then
           MsgBox obj.Name & ": " & obj.Prop1
    
        ElseIf TypeName(obj) = "NomeDaClasseDoXObjectAnaYYY" Then
           MsgBox obj.Name & ": " & obj.Prop2
    
        End If
    
     Next
    
     End Sub
    
  2. Outra forma seria utilizando o CustomConfig, mas, neste caso, precisaria criar um XControl que gerasse um XObject na pasta indicada e já fosse associado à propriedade que irá exibir os valores da Prop1, por exemplo. Ou, ainda utilizando CustomConfig, associar objetos de tela com nomes sequenciais a instancias de XObject sequenciais também.

    Para mais detalhes sobre o CustomConfig, ver estes artigos (aqui, aqui, aqui e aqui) e este video.

    Também há um exemplo no tutorial E3 Avançado > Capítulo Adicionando Objetos em Tempo de Execução > Exercícios > CustomConfig.

  3. Uma outra possibilidade é criar um ComboBox, por exemplo, que receba o nome de todas as instancias e, ao selecionar um nome, associar a propriedade do XObject temporariamente a um objeto display (ou setpoint). Ex.:

     Sub ComboBox1_OnStartRunning()
     ' Script para adicionar o nome dos XObjects ao ComboBox
     Clear()
     Dim folder
     Set folder = Application.GetObject("EntidadesDados.Ana")
    
     For each obj in folder
       	AddItem obj.Name
     Next
     
     End Sub
    

Depois, ao selecionar, criar uma associação bidireicional:

Sub ComboBox1_Change()
On Error Resume Next
Dim Bind, Source, folder
Set folder = Application.GetObject("EntidadesDados.Ana")

For each obj in folder
	If obj.Name = Value Then
		If TypeName(obj) = "NomeDaClasseDoXObjectXXX_AnaXXX" Then
			Source = obj.PathName&".Prop1"
			MsgBox "Criando uma conexão em '" & Source & "'."
			Screen.Item("Texto4").Links.CreateLink "Value", Source, 1

		ElseIf TypeName(obj) = "NomeDaClasseDoXObjectAnaYYY" Then
			Source = obj.PathName&".Prop2"
			MsgBox "Criando uma conexão em '" & Source & "'."
			Screen.Item("Texto4").Links.CreateLink "Value", Source, 1
		End If
	End If
Next

End Sub

Estes são alguns exemplos para tentar ajudar, mas ainda há outras formas de fazer.

Há alguns artigos que são mini tutoriais no Elipse Knowledgebase que poderão lhe auxiliar como:

Automação na geração de códigos
Usando bibliotecas no E3
Noções de VBScript no E3

Caso ainda não seja o que precisa, por favor, nos informe.

Sds.

@Fernando

Por hora muito obrigada. Vou fazer aqui e te falo o resultado.