Manoel Frederico da Silva / Product Manager & MAGIC Evangelist / Magic Software Brasil
Você já teve a vontade (ou necessidade) de criar uma estrutura de componentes em soluções UniPaaS, onde o CompA precisa acessar o CompB, e o CompB precisa acessar o CompA ?
Isso se chama “referência circular” e não é permitida no sistema de componentes (.ecf). Por definição, referências circulares significam algo que já começou errado.
Mas imagine uma situação mais ou menos assim:
Um componente “A” possui o cadastro de clientes, e um componente “B” possui os movimentos dos clientes. Do cadastro (em “A”) você quer ter um botão que acesse seus movimentos (em “B”). E dos movimentos (em “B”), um botão que permita acessar os clientes (em “A”).
Como conseguir isto sem ter de repetir o programa de cadastro ou de movimentos?
Simples:
1) Crie um componente de recursos (CompX) com dois eventos públicos e expostos no MainProgram: Abrir Cadastros e Abrir Movimentos.
2) No componente de cadastro (CompA), registre o CompX (CRR – SHIFT+F7) e no botão para acessar os lançamentos execute um RaiseEvent: Abrir Movimentos
3) No componente de movimentos (CompB), registre o CompX (CRR – SHIFT+F7) e no botão para acessar os cadastros execute um RaiseEvent: Abrir Cadastros
4) Na aplicação “host”, registre o CompX (CRR – SHIFT+F7) e crie Handlers para os dois eventos expostos, no MainProgram: Abrir Cadastros e Abrir Movimentos. Neles, basta realizar as chamadas para os respectivos programas: CompA.Cadastros ou CompB.Lançamentos.
Neste link você pode baixar um projeto exemplo (UniPaaS 1.9g) com o que foi mostrado acima.