Utilizar o CreateLink em um XControl com XObject

Boa tarde,

Estou realizando uma aplicação que contem vários dispositivos iguais, e cada dispositivo tem seus respectivos valores de visualização, para isso criei uma tela modal, um XControl com a tela com os parâmetros necessários e para não ficar associando várias variáveis utilizei um XObject com todas as variáveis necessárias para o XControl, porém não estou conseguindo fazer o CreateLink entre o XControl em tela e o XObject na pasta dados. Poise preciso que dependendo de qual dispositivo o operador clicar tenho que associar com o outro dispositivo.

Criei esse código no OnPreShow

Item("SinoticoDespolpadeira1").Links.CreateLink "Equipamento", Application.GetObject("Dados.Despolpadeiras").PathName + "." + Arg

Esse é o código para abrir a tela modal no XControl

Application.DoModal "PopDespolpadeiras", , , , , , "Despolpadeira" + cStr(Despolpadeira.NrDespolpadeira), 1+2+16+64+256+2048

E esse é o print da pasta Dados

image

O erro que ocorre é esse

image

Seria, por acaso, Equipamento um propriedade do seu xc, cujo Type seja um xo, neste caso o Despolpadeira? Se sim, basta apenas:

Sub PopDespolpadeiras_OnPreShow(Arg)
    Item("SinoticoDespolpadeira1").Equipamento = _
            Application.GetObject("Dados.Despolpadeiras").PathName + "." + Arg 
End Sub

EDIT:
Ou ainda:

Sub PopDespolpadeiras_OnPreShow(Arg)
    Item("SinoticoDespolpadeira1").Equipamento = "Dados.Despolpadeiras." & Arg 
End Sub

Bom dia @leandrobpedro, Equipamento é o nome da propriedade do meu xc que é o xo.

image

image

Esse método que você me passou fica como se estivesse associado ou eu teria que colocar esse script para rodar toda a vez que desse 1 segundo por exemplo. Pois as tags envolvidas no xo ficam mudando.

Agradeço o contato.

Então, essas propriedades que ficam com ícone de corrente, que a elipse chama de “links indiretos”, não aparecem na coleção links, portanto penso que vc não irá conseguir utilizar o método CreateLink (inclusive um dos @param desses método é o tipo de conexão, se direto, reverso, tabela, etc…), e esse tipo de fonte, de fato, fica constante com essa “corrente”.

* Podemos aguardar alguém da Elipse pra confirmar isso que eu falei.

Os tags do xo ficam mudando de valor ou mudando de PathName? Enfim, penso que independe do que muda no xo não há problema, basta fazer a associação conforme minha resposta anterior apenas uma vez, no caso no OnPreShow().

1 Like

O ‘PathName’ não muda, mas as tags do xo ficam modificando como por exemplo uma leitura de um sensor, ou os booleanos que tenho dentro do xo.

Mas muito obrigado pela ajuda, vou testar aqui fazer desse modo que você comentou.

Só para concluir a pergunta, é exatamente com o @leandrobpedro comentou no primeiro post dele.

Encontrei esse KB procurando outro assunto. Então vou deixar aqui pra conhecimento.

Bom dia @Felipe_FKS, estou com uma dificuldade similar a tua, conseguistes resolver teu problema?

Bom dia @OsvaldoNeto,

Consegui sim, fiz somente com uma atribuição simples e funcionou. Como o @leandrobpedro mencionou acima.

Mais precisamente desse modo, no OnPreShow da minha tela modal eu passo o caminho da pasta dados que estão meus dados para cada máquina e funcionou muito bem.

Mas dessa forma ficou atualizando os valores em RunTime, conseguiu deixar dinâmico? Eu tentei aqui porém ficou estático no primeiro valor de leitura, vou revisar o código, obrigado!

Boa tarde!

Apenas uma recomendação, ao fazer as associações dos objetos visuais com suas fontes de valores, se atente a confirmar se está chegando até a propriedade deseja, realizar uma associação apenas até o objeto, pode ocasionar no efeito informado, de apenas mostrar o último valor ao abrir a tela.

Exemplo associação XControl:

Qualquer dúvida não deixe de postar.

Atenciosamente,
Marco Antonio

Ok, obrigado pela explicação! Abraço.