Troca de tela automática

Como comparo esse valores.

Oq fiz:

Peguei a posicao do mouse X(GetMouseX), e copiei esse valor para uma tag interna. Agora preciso saber como ficar comparando esse valor, exemplo, parei de mexer no viewer salvou minha posicao do mouse na tag, quando voltar a mexer no viewer, vai alterar esse valor se comparado ao ultimo, entao realizar uma função.

Crie um Script no viewer pra ficar rodando continuo. Compara se seu TAG interno é igual ao “GetMouseX”.

Exemplo:

Crie um TAG interno do tipo “boolean” com o Nome “AplicacaoON”

image

No evento OnStartRunning do Viewer, atribua o valor “True” a ele.

image

Crie um evento novo no viewer cujo gatilho seja esse seu tag “AplicacaoON” e coloque a condição da ocorrência: "sempre que a expressão for verdadeira, marque a caixa “Repetir evento” e no período você coloca quanto tempo deseja.

Compare os valores de X e Y:

Nao consegui,
Abaixo oque fiz

Script apos inatividade do viewer ativar o contador e comecara trocar tela(ja funcionando)

Script para quando o mouse mexer posição, desativar contador que troca tela

Como você obtém os valores do “IntPosiçãoXMouse”?

na propria tag intPosiçãoXMouse
Value = GetMouseX

Você pode mandar a aplicação para eu ver?

felipe.pena@isaengenharia.com.br

Bom dia,

Interessante esta discussão, resolvi este problema primeiramente criando 2 tags no Viewer:

  • Inatividade - Valor padrão: False
  • StatusInatividade

Depois alterei o evento padrão de inatividade do viewer da seguinte forma:
Sub Viewer_OnInactive()
Item(“Inatividade”).Value = True
Item(“StatusInatividade”).Value = GetMouseX() + GetMouseY()
End Sub

Em seguida, criei um evento personalizado no viewer assim:

E pronto. Agora eu posso fazer associações com o Tag Viewer.Inatividade para o que eu desejar.

Bom dia, acabei de encaminhar.
Obrigado pela atenção!

@nivaldonicolau Bom dia!

Vou dar uma entendida na sua ideia e posto o resultado.
Obrigado!

Para a aplicação que estava tentando, funcionou perfeitamente.

Coloquei para quando a expressão ser verdadeira, ativa o contador q faz a troca de tela, caso mexa no viewer desativa imediatamente a troca de telas.


Obrigado!

1 Like

Quem bom que deu certo!

Ao invés de ativar e desativar o tag contador pelo script você também poderia simplesmente fazer uma associação com o tag Viewer.Inatividade.

Exemplo:

Entendido.

Legal, obrigado!

Boa tarde. Estava precisando de algo parecido. Gostaria de apresentar em uma TV externa apenas 3 telas da minha aplicação, e elas tem que ficar alternado ciclicamente a cada 10s, por exemplo. Teria como fazer isso? Sem que impacte a operação de outros “viewers/operadores”

Bom dia!

Teria como assimilar essa troca de tela somente com um usuário?

Preciso criar uma apresentação em uma TV para supervisão das telas, porem não posso usar os usuários de operação para não impactar nas plantas!

Você pode aplicar esta solução [Troca de tela automática] e criar uma associação direta na propriedade Enabled do Viewer.tagScreenChanger comparando o usuário corrente com o nome desejado.

image

Outra duvida!

Eu gostaria que as telas ficassem trocando dentro de um determinado quadro!

O jeito que eu fiz ela abre uma tela nova para exibir as telas, como posso corrigir isso?

Você pode definir um Frame único nesta parte do código:

Ainda não funcionou!

'Frame onde as telas devem abrir. 

Set objFrame = Application.GetFrame(“Quadro1”)

set i = Parent.Item("TagInterno1")

select case i.Value

case 1
Application.GetFrame("").OpenScreen(“Tela1”), 0
case 2
Application.GetFrame("").OpenScreen(“Tela2”), 0
case 3
Application.GetFrame("").OpenScreen(“Tela4”), 0
i.Value = 0
end select
i.Value = i.Value + 1

Esta solução: Troca de tela automática

Set objFrame = Application.GetFrame("Quadro1")

# Voce declarou corretamente o Frame, mas depois 
# utilizou outro Frame
Application.GetFrame("").OpenScreen("Tela1"), 0

# Seria então o caso 
objFrame.OpenScreen("Tela1"), 0

Em todo caso, recomendo utilizar a solução proposta pelo link acima.