Abrir janelas diferentes numa maquina com dois Monitores

Olá,

Estou desenvolvendo uma aplicação e na maquina preciso usar dois monitores, para visualizar dois processos em áreas diferentes, o problema é que quando abro uma tela, ela fica modal, e mesmo movendo para o segundo monitor, eu não consigo abrir outra no monitor um, eu preciso poder usar os dois monitores em janelas do supervisório diferente, como faço isso?

@ezequielsd, bom dia.

Ao invés de utilizar o método DoModal, pode utilizar os métodos abaixo:

  • GetFrame/ MoveFrame/ SetFrameOptions

Características:
Pode trabalhar na tela abaixo desta, mover, redimensionar, etc.

Exemplo para script:

TelaPopUp1
Application.GetFrame(“FrameInexistente1”).MoveFrame , , 500, 400
Application.GetFrame(“FrameInexistente1”).SetFrameOptions “Exemplo Frame”, 1+2+16+64+256+2048
Application.GetFrame(“FrameInexistente1”).OpenScreen (“TelaPopUp1”), Arg

TelaPopUp2
Application.GetFrame(“FrameInexistente2”).MoveFrame , , 500, 400
Application.GetFrame(“FrameInexistente2”).SetFrameOptions “Exemplo Frame”, 1+2+16+64+256+2048
Application.GetFrame(“FrameInexistente2”).OpenScreen (“TelaPopUp2”), Arg

Obs.: Para abrir mais de uma tela ao mesmo tempo, é necessário mudar o nome do Frame, caso contrário, ao clicar em botões que abram telas diferentes, irão abrir no mesmo frame.

Também tem este artigo no KB: http://kb.elipse.com.br/pt-br/questions/1002

Suas funcionalidades podem ser vistas no guia “Referência de Scripts”, disponibilizado junto ao instalador do E3 na pasta “Manuais”.

Abraços.

Obrigado Fernando, vou testar!!

Fernando,

Eu fiz e deu certo. Não entendi foi como fazer a do link que me passou, não deu muito certo. A unica coisa que estou tentando fazer é que ao mover a janela para o outro monitor, ela se enquadre auto, como se eu apertasse a tecla Window + Seta cima, ou tem como eu direcionar para abrir esta tela sempre no monitor 2?

@ezequielsd,

Se há a opção de sempre jogar esta tela pra o segundo monitor, então acredito que uma opção seria verificando a resolução do monitor.

Veja este script, por exemplo:

Sub CommandButton1_Click()
Set newframe = Application.GetFrame(“FrameInexistente”)

newframe.SetFrameOptions “Exemplo Frame”, 1+2+16+64+256+2048

'Se a posição do Mouse for menor que a da resolução do primeiro monitor
If Application.GetMouseX() < 1280 Then
newframe.MoveFrame 1280, 90, 500, 400
End If
newframe.OpenScreen (“TelaPopUp”), Arg
newframe.MaximizeFrame()
End Sub

Abraços.

Uma alternativa também seria com o script abaixo, que verifica a largura do monitor principal e desloca a tela a ser aberta para o nonitor secundário, se configurada para esquera ou para direita.

É preciso informar em que posição deseja abrir a janela, sua largura e altura.

Script:

'Configuração para abrir a Tela a Esquerda ou a Direita da Tela Principal
SecondMonitor = “right”

posicaoXInicial = 0
sComputerName = “.”
Set objWMIService = GetObject(“winmgmts:\” & sComputerName & “\root\cimv2”)
sQuery = "SELECT * FROM Win32_DesktopMonitor "
Set objItems = objWMIService.ExecQuery(sQuery)

For Each objItem In objItems
posicaoXInicial= objItem.ScreenWidth
next

Arg=0
if SecondMonitor = “right” then
Application.GetFrame(“Frame”).MoveFrame +posicaoXInicial,0
Application.GetFrame(“Frame”).OpenScreen(“Tela1”), Arg
else
Application.GetFrame(“Frame”).MoveFrame -posicaoXInicial,0
Application.GetFrame(“Frame”).OpenScreen(“Tela1”), Arg
end if

'Configuração de largura e altura do monitor secundário
Tela_width= 1366
Tela_height= 768
Application.GetFrame(“Frame”).MoveFrame ,Tela_width,Tela_height

1 Like

Olá,

Legal @Fernando e @scherer, vou testar estas dicas, Obrigado!