O Windows pode mapear vários monitores em desktops virtuais, permitindo-nos usá-los para projetar aplicativos fáceis de trabalhar. Por exemplo, o PowerPoint utiliza totalmente as vantagens dos monitores duplos (a maioria dos laptops suporta). . Então, como desenvolvemos esse aplicativo? Este artigo mostrará se você implementar aplicativos usando vários monitores usando o Delphi.
O Windows também suporta métodos de exibição de clonagem e cada monitor produz o mesmo conteúdo, o que faz sentido para alguns aplicativos. Embora algumas placas gráficas também suportem dois monitores, elas não são realmente multi-displays, mas os modos de exibição de alta resolução virtual (como 2048 × 768 ou 1024 × 1536), que exibem a tela para dois monitores através da placa gráfica. Nenhum desses dois modos de exibição é Zhongdian introduzido neste artigo, e eles também são muito simples, por isso não os repetiremos novamente.
O Windows suporta até 10 monitores, e o Windows mapeia todos os monitores em uma grande área de trabalho virtual. A tela pode ser entendida como uma visão parcial da área de trabalho. Esses monitores podem ser organizados arbitrariamente nas propriedades de exibição de acordo com a localização física da tela. Se o monitor estiver organizado de forma irregular, algumas partes da área de trabalho virtual não poderão ser exibidas em nenhum dos monitor. Para não fazer com que um formulário apareça entre dois monitores, o Windows usa uma tela como monitor principal. Quando o computador é iniciado, a caixa de diálogo de login é exibida no monitor principal. A maioria dos displays de inicialização de programas será exibida no monitor principal.
De acordo com a introdução acima, não é difícil encontrar vários conceitos importantes: desktop, monitor, monitor principal etc. Primeiro, devemos primeiro descobrir esses conceitos e seu relacionamento anterior. Essa é a chave para dominar o método de desenvolvimento de aplicação de várias exibições. Depois de entender esses conceitos, as outras partes serão muito fáceis de entender.
Uma área de trabalho realmente se refere à área lógica que as janelas podem exibir. De fato, um formulário pode ser exibido fora da área de trabalho. No entanto, isso não significa que todas as partes da área de trabalho sejam exibidas em um determinado monitor (o motivo é o mencionado antes);
Uma área de trabalho é uma área retangular que descreve o tamanho da área de trabalho por suas coordenadas de vértices (superior, esquerda) e largura e altura. Por que você ainda precisa de coordenadas de vértices? Porque as coordenadas de vértices não são consideradas como garantidas (0,0). Então, onde está (0,0)? É uma longa história, então vamos primeiro revisar o conceito mencionado agora - o monitor principal. O Windows deseja que o programa geral seja exibido no monitor principal no início, porque as pessoas estão acostumadas a prestar atenção a um monitor mais próximo a elas. O Windows não pode forçar os usuários a usar o monitor mais à esquerda como o monitor principal, para que os aplicativos precisem se preocupar com os cálculos para se exibir no monitor principal. No entanto, a maioria dos usuários possui apenas um monitor (dois monitores ocupam muito espaço) e os aplicativos comuns não desejam gastar muito esforço para calcular onde está o monitor principal e onde devem ser exibidos. Portanto, o Windows propõe uma solução razoável: use as coordenadas de vértices da tela principal como a origem do sistema de coordenadas. Dessa forma, os programas comuns precisam considerar problemas em um único ambiente de monitor.
O monitor é uma visão parcial da área de trabalho. É como olhar para o cenário do lado de fora da janela pela janela, em pé na frente de diferentes janelas, você pode ver imagens diferentes. Da mesma forma, a tela também é uma área retangular e suas dimensões também podem ser descritas pelas coordenadas de vértices (superior, esquerda) e largura e altura. As coordenadas de vértices são relativas à origem do sistema de coordenadas da área de trabalho, ou seja, para os vértices da tela principal.
O conceito de espaço de trabalho é relativamente simples.
O Windows fornece um conjunto de APIs para o desenvolvimento de aplicativos de várias exibições. A VCL encapsula essas APIs e as integra em toda a estrutura naturalmente, facilitando o desenvolvimento de aplicativos de várias exibições. O seguinte é um conteúdo relacionado.
O VCL mais familiar é provavelmente o Tcustomform, que é a classe base de todas as formas. A propriedade de posição do Tcustomform é usada para definir a posição real do formulário. da tela principal; Se esta propriedade estiver definida como PodesktopCenter e o programa será executado em um sistema com vários monitores, essa janela será exibida entre os dois monitores, causando problemas desnecessários ao usuário. Portanto, mesmo que nosso programa não tenha sido projetado para exibição múltipla, esse valor deve ser tratado com cuidado. Outra propriedade é o DefaultMonitor, que tem uma função semelhante à posição, que determina qual monitor a janela é exibida inicialmente. Possui quatro valores alternativos: DMDESKTOP, DMPrimary, DMMAINForm e DMactiveForm. Seus significados são os seguintes:
Valor | Significado |
dmdesktop | Sem tratamento especial |
DMPrimary | Exiba o formulário no primeiro monitor. Essa é outra armadilha, literalmente o monitor principal e, de fato, refere -se ao monitor da tela.Monitor [0]. |
dmmAinform | Exibir o formulário para o monitor onde o formulário principal está localizado |
DMactiveForm | Mostre o formulário para o monitor onde o formulário ativo está localizado na área de trabalho |
O TCUSTOMFORM também possui uma propriedade comum somente leitura (sem publicação), que fornece uma referência para acessar a instância de exibição em que o formulário está localizado.
Então, como você move o formulário entre diferentes displays? Isso não é difícil, provavelmente você também pensou nisso. Aqui estão dois métodos:
Primeiro, você pode definir a parte superior e à esquerda do TcustomForm para exibir o formulário em qualquer lugar da área de trabalho. Como mencionado anteriormente, a área de trabalho é composta por todos os monitores. Eles têm um sistema de coordenadas comuns, para que a posição do formulário possa ser determinada com base na posição lógica da tela. A questão agora é como obter a posição lógica e o tamanho de cada monitor, que será introduzido posteriormente.
Segundo, você pode chamar o método de tcustomform a mais visível para exibir totalmente o formulário para a exibição especificada. Este método pode ser usado para impedir que a janela exiba uma parte de cada um dos dois monitores.
Acabamos de fazer uma pergunta: como obter a posição lógica e o tamanho de cada monitor. Para responder a essa pergunta, precisamos introduzir outra categoria: Tscreen e Tmonitor.
O TScreen descreve algumas informações relacionadas aos dispositivos de exibição e estamos preocupados principalmente com informações relacionadas à posição lógica e tamanho da tela. Outros aspectos podem ser encontrados na documentação de Delphi. Quando o programa está em execução, o VCL cria automaticamente uma instância da tela T - uma variável global; portanto, geralmente o programa não precisa instanciar a tela T.
O Tscreen possui um conjunto de propriedades em forma de desktop*, que descreve o tamanho de toda a área de trabalho e as coordenadas de cada vértice. Existem também várias propriedades de grande importância para o desenvolvimento de aplicações multi-monitores: MonitorCount e Monitors. Através dessas duas propriedades, podemos enumerar todas as instâncias dos monitores (Tmonitores) no sistema.
Entre as muitas propriedades da tela T, encontraremos as duas propriedades: altura e largura. Seja especialmente cauteloso em não se referir ao tamanho de toda a área de trabalho, mas à altura e largura da tela principal. É muito fácil fazer com que as pessoas se sintam ilusão por não poder pensar no tamanho de toda a área de trabalho. Da mesma forma, existe um conjunto de propriedades em forma de margem de trabalho*, que descreve o tamanho da área de trabalho da tela principal e as coordenadas de cada vértice. Você acha que algo está faltando? Por que as propriedades da posição relativa do monitor principal não estão obtendo? O motivo é como mencionado anteriormente: o Windows usa o canto superior esquerdo do monitor principal como a origem do sistema de coordenadas; portanto, a posição relativa do monitor principal deve ser (0, 0).
Além dessas propriedades, também introduziremos três funções de membro da TScreen: MonitorFrompoint, MonitorFromRect e MonitorFromWindow. Como o nome indica, são instâncias da tela em que uma coordenada, uma determinada área e uma certa janela estão localizadas. Também pode ser usado no desenvolvimento real.
Melhor, vamos dar uma olhada na aula do Tonitor. Ele encapsula as propriedades relevantes da tela física-tudo somente leitura. A tabela a seguir descreve brevemente o significado dessas propriedades, que são muito úteis para escrever aplicativos com vários display:
propriedade | ilustrar |
Lidar | Obtenha o identificador do Windows deste monitor |
Monitorornum | Obtenha o número do monitor |
Primário | Obtém se o monitor é o monitor principal. E o primário com apenas um monitor é verdadeiro. |
Principal | Obtenha o limite superior do monitor |
Esquerda | Obtenha a borda esquerda do monitor |
Altura | Obtenha a altura do monitor |
Largura | Obtenha a largura do monitor |
BoundsRect | Obtenha a área de desktop correspondente do monitor, que é equivalente às quatro propriedades acima |
Trabalho de trabalho | Obtenha a área correspondente à área de trabalho do espaço de trabalho do monitor. |
Após uma compreensão clara da tela T e do Tonitor, os problemas anteriores serão naturalmente resolvidos. A essa altura, este artigo abordou todo o conhecimento necessário para desenvolver aplicativos de várias exibições. Eu acredito que você pode usar esse conhecimento para desenvolver produtos de software muito práticos.
Apêndice: você pode baixar uma demonstração para ajudar a entender este artigo.