Descrição:
É possível configurar uma aplicação para utilizar uma matriz de monitores?
Solução:
Sim, é possível. Este tutorial mostra como configurar uma aplicação para utilizar dois ou mais monitores independentes entre si, possibilitando alterar a configuração do número total de monitores e sua disposição física com um mínimo de intervenções na aplicação. Isto é feito com base na aplicação de exemplo disponível neste artigo.
A fim de permitir maior facilidade de configuração, esta aplicação faz uso de
- um objeto Quadro (Frame) exclusivo para cada monitor, em vez de um quadro único para todos os monitores.
- um script de inicialização no objeto Viewer.
- um XObject criado para este fim específico.
Para este exemplo, a aplicação foi configurada da seguinte forma:
- com quatro monitores dispostos no formato 2×2, ou seja, uma matriz 2×2 de monitores.
- com um quinto monitor que será aberto como telão quando a aplicação estiver em execução, independente dos outros quatro monitores.
- com telas configuradas para serem abertas na resolução 640×480, a fim de possibilitar a visualização deste exemplo em um único monitor com resolução fullHD ou semelhante.
Estas configurações podem ser modificadas posteriormente, sem a necessidade de alterar os quadros que já foram criados.
Passo 1: Criar e configurar os objetos Quadro (Frame)
Primeiramente, defina quantos tipos de quadros sua aplicação terá, e a partir disto crie estes objetos no E3.
Na aplicação de exemplo, foram definidos dois tipos de quadros:
- Quadros de inicialização: quadros que serão carregados ao iniciar a aplicação. Na aplicação de exemplo, eles são chamados Início, pois são os quadros que serão carregados pelo Viewer na inicialização.
- Quadros de produção: demais quadros utilizados pela aplicação após sua inicialização, cujo nome pode variar conforme sua função (aqui, eles são chamados Principal).
Podem ser criados outros tipos de quadros com qualquer nome, mas as suas divisões devem ter nomes únicos em toda a aplicação e devem ser numeradas sempre conforme o quadro pai:
Repare que há quatro quadros Início e cinco quadros Principal. Isto acontece porque, neste exemplo, será possível abrir um quinto monitor após a inicialização da aplicação. Como este quinto monitor não será aberto na inicialização, não é necessário um quadro chamado Inicio5.
Passo 2: Instanciar e configurar a classe de dados xoConfigMonitor
A classe de dados xoConfigMonitor deve ser instanciada na pasta Dados:
Esta classe deve receber as seguinte configurações:
- AutoDetect: quando habilitada, detecta automaticamente as dimensões do monitor principal e abre os quadros iniciais com estas dimensões.
- MatrixDimension: define o tamanho e distribuição de uma matriz de monitores. Deve ser escrita no formato LxC, onde L = número de linhas e C = número de colunas. Seu valor deve ser coerente com o especificado na propriedade MonitorNumber.
- MonitorNumber: define o número total de monitores. Deve ser coerente com o indicado na propriedade MatrixDimension.
- StartupFrameBaseName: define o nome base para o conjunto de quadros de inicialização.
Passo 3: Configurar o objeto Viewer
Na aplicação de exemplo, o objeto Viewer possui um script de inicialização que é executado no evento OnStartRunning. Este script deve ser copiado para a sua aplicação.
Em seguida, configure as propriedades do Viewer na aba Configuração deste modo:
- selecione a opção Iniciar janelada.
- insira as dimensões do monitor principal.
Isto finaliza a configuração da aplicação para uso de uma matriz de monitores. Para personalizar suas definições, considere o seguinte:
- caso queira reduzir o número total de monitores, basta alterar as propriedades MonitorNumber e MatrixDimension do xoConfigMonitor, não sendo necessário alterar ou excluir nenhum dos quadros existentes.
- caso queira aumentar o número total de monitores, crie os quadros correspontentes e atualize as propriedades MonitorNumber e MatrixDimension do xoConfigMonitor.
- caso queira alterar a disposição física da matriz de monitores para um valor diferente de 2×2, basta alterar apenas a propriedade MatrixDimension do xoConfigMonitor.
- se um valor inválido for digitado na propriedade MatrixDimension do xoConfigMonitor, apenas o monitor principal será aberto.