Bom dia, No meu programa tem uma window “consulta simples”, dois smart browser e uma smart viewer. No smart browser 1, que é o principal do programa, eu gero a pesquisa das tabelas “ordem-compra, item, prazo-compra e uma tabela específica” e alimento uma temp-table, o resultado da temp-table é exibido no componente browse do smart braowser. Essa parte está funcionando corretamente. No smart viewer tem um campo fill in e um editor, esse smart viewer está vinculado com a tabela ordem-compra. No smart browser 2, tem um botão e um browse, no botão eu faço a pesquisa, alimento uma temp-table e atualizo o browse. Minha necessidade é: ao clicar no registro do smart browser 1 os componentes da smart viewer devem ser atualizados com o número da ordem de compra e com a narrativa da ordem, que são os dois campos da smart viewer. Como é possível passar esses valores do smart borwser para o smart viewer?
tem 2 jeitos ai, o primeiro, que até é mais complicado, dependendo da estrutura do seu container, é vc "espalhar" entre os objetos o handle de cada um, assim, a sua smart browser 1 sabe o handle da smart viewer, dai vc cria uma procedure na smart viewer que recebe os dados do browser e "se auto atualiza a si mesma". O 2 jeito, é vc usar as procedures de state, que já existem, mas pra ativa-las vc tem que criar um smart link de state entre os objetos que vão se comunicar, dai o que acontece, no seu smart browser, vc faz run new-state('ATUALIZA|campo1|campo2'), isso mesmo executa uma procedure chamada new-state passando como parametro uma string sua. Na smart viewer, vc tem uma procedure chamada "state-changed", verá que nela, recebe 2 parametros, a variavel p-state é que vira preenchida com o que vc mandou pelo run new-state, então vc pega essa variavel, trata o que vc mandou e a smart-viewer mais uma vez "se auto atualiza a si mesma". Lembrando que esse run new-state manda a mensagem para todos os objetos que tiverem um smart link de state ligando eles, e é claro, se tem informação que vai e volta, tem que ter 2 links de state, browser -> viewer e viewer -> browser
completando, como eu disse, o run new-state manda pra todos os objetos que tem o link de state, vc pode usar essa mesma informação para atualizar outros objetos simultaneos.