Descrição:
Como posso criar um único objeto gráfico para comandar vários motores?
Solução:
Isto requer a criação de objetos de biblioteca. Para isto, siga estes procedimentos:
1. Crie um XObject (DadosMotor no exemplo) que receba todos os valores padrão de um motor em suas propriedades.
2. Crie um XControl (XMotor no exemplo) para representar a interface do objeto de comando do motor. Este XControl deverá ter uma propriedade do tipo do XObject (FonteDados no exemplo). Além disto, no evento que chama a tela de comandos (evento Click() da figura do motor, por exemplo), adicione o seguinte script:
Arg = XMotor.FonteDados.PathName Application.DoModal "TelaEstadoIndexada", , , , , , Arg
3. Salve e registre a biblioteca.
4. Em uma pasta de dados do servidor, adicione tantos XObjects quantos forem os motores existentes.
5. Na tela desejada, adicione os XControls desejados e associe-os (na propriedade FonteDados) com os respectivos XObjects da pasta de dados.
6. Crie uma tela genérica (TelaEstadoIndexada no exemplo), e no evento OnPreShow() adicione o script que passa o nome do XObject correspondente ao XControl que foi clicado na tela anterior.
Ao clicar sobre um motor qualquer da TelaInicial com a aplicação em execução, a propriedade PathName do XObject associado a este XControl será atribuida à variável Arg. Além disto, será executado o comando que abre a tela genérica (TelaEstadoIndexada).
Ao abrir a tela genérica, será executado no evento OnPreShow() o script que passa o valor da variável Arg (contendo a propriedade PathName do XObject) para a propriedade do(s) objeto(s) de tela que deve(m) mostrar os dados do servidor.