[RESOLVIDO] Como escrever nas variáveis de um Xcontrol que está em outra tela?

Olá, estou executando um script no evento OnPreShow de uma tela modal, nele quero obter valores e escrever valores em um Xcontrol presente em outra tela da aplicação, porém ao executar o script ele obtém apenas o valor inicial das variáveis e não os valores atuais, mesmo que eu os mude. Segue o script que estou usando.

Sub Tela_Sistema_OnPreShow(Arg)

Set Parametros = Item(“Xcontrol_Parametros”)
Set Sistema = Application.GetScreen(“Tela_Sistema”).Item(“Xcontrol_Sistema”)

Parametros.NOME_TELA = Arg
Parametros.NOME_VALV01 = Sistema.FLOC_VALV01_NOME
Parametros.NOME_VALV02 = Sistema.FLOC_VALV02_NOME
Parametros.NOME_VALV03 = Sistema.FLOC_VALV02_NOME
Parametros.STATUS_VALVULA_01 = Sistema.FLOC_VALV01
Parametros.STATUS_VALVULA_02 = Sistema.FLOC_VALV02
Parametros.STATUS_VALVULA_03 = Sistema.FLOC_VALV03

End Sub

A propriedade NOME_TELA recebe o valor do Arg e esse funciona certo. Os demais, que pegam o valor direto do item da outra tela, pegam apenas o valor inicial da variável, por exemplo, a propriedade FLOC_VALV01_NOME está definida com o valor inicial “NOME” no seu respectivo Xcontrol. Alguém sabe me dizer porque os valores não atualizam no ato do OnPreShow?

No lugar de: Sub Tela_Sistema_OnPreShow(Arg) na verdade é Sub Tela_Parametros_OnPreShow(Arg), eu mudei os nomes para postar aqui.

Oi Gabriel, boa tarde!

Deixa eu ver se entendi corretamente, quer pegar os valores de um XControl da Tela01, que a partir da mesma, chama a Tela02, e configurar o XControl da Tela02 com os dados do XControl da Tela01?

Caso positivo, vejo algumas opções para este cenário:

  1. Existe um XObject comum a estes XControl? Caso positivo, pode passar a referência do XObject ao abrir a tela, e pegar as informações deste (http://kb.elipse.com.br/pt-br/questions/3821/Usando+Bibliotecas+no+Elipse+E3%3A+Lição+3.);
  2. Caso tenha somente estruturas de XControl, para passar os dados do XControl da Tela01 para a Tela02, teria que fazer um array com tamanho de acordo com as informações que deseja passar (neste caso 6), e em cada posição, colocar um valor/dado. No OnPreShow, separar o array novamente, configurando as propriedades desejadas (Exemplo: http://kb.elipse.com.br/pt-br/questions/2102/Noções+de+VBScript+no+Software+Elipse+E3%3A+Lição+8+-+Arrays.).

Atenciosamente,
Marco Antonio

1 Like

Obrigado Marco, funcionou com o Array. Não sabia que podia usar Array no argumento, isso me abre mais possibilidades.

Att
Gabriel Rodrigues

Por nada!

Atenciosamente,
Marco Antonio