Page 1 of 2

Como alterar propriedade de um objeto via Script LUA

Posted: Wed Apr 10, 2013 1:06 pm
by WSL
Olá pessoal, tudo bem?

Alguém poderia me ajudar com a sintaxe do comando para alterar uma propriedade de um objeto utilizando Script LUA?

Grato!

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Wed Apr 10, 2013 4:44 pm
by infante
A sintaxe LUA para acessar propriedades de um objeto é a seguinte:

Objeto.NomeDaPropriedadeDoObjeto

No manual online do HIscada Pro, nesta página, existem exemplos de utilização de scripts LUA.
Na seção Exemplos de Utilização, subseção Exemplo de interação com componentes pode-se observar um exemplo desta sintaxe:

Code: Select all

local scr = Screens.Get("Screen_001") -- Variável src agora tem uma referencia a um objeto de tela
print(scr.Button_001.Left)            -- Acessa atributo Left do atributo Button_001 do objeto de tela na variavel src e o imprime
scr.Button_001.Visible = false        -- Atribui valor 'false' ao atributo Visible do atributo Button_001 do objeto de tela na variavel src
Em anexo a esta resposta, se encontra um arquivo de um projeto de exemplo do HIscada Pro.
Neste projeto existem dois objetos, um botão (Button) e um texto estático (StaticText), em uma tela (Screen).
O botão está associado a um script LUA e, quando pressionado, executa este script.
Ao executar, o script verifica um dos atributos (Caption) do texto estático e muda o valor deste atributo.

Os caminhos destes objetos na hierarquia do projeto em anexo são:

Code: Select all

Viewers.Scripts.ScriptGroup_001.Script_001                -- Caminho para o Script LUA na hierarquia do projeto
Viewers.Screens.ScreenGroup_001.Screen_001                -- Caminho para a tela (Screen) na hierarquia do projeto
Viewers.Screens.ScreenGroup_001.Screen_001.Button_001     -- Caminho para o botão (Button) na hierarquia do projeto
Viewers.Screens.ScreenGroup_001.Screen_001.StaticText_001 -- Caminho para o texto estático (StaticText) na hierarquia do projeto
. No manual online do HIscada Pro, existe um guia para importar um projeto, presente nesta página, na seção Importando um Projeto.

. Nesta página do manual, podem ser obtidas informações a respeito das propriedades de um objeto de StaticText (texto estático), que é utilizado no projeto exemplo em anexo a esta resposta.

Em caso de novas dúvidas, basta utilizar nosso fórum!

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Mon Apr 22, 2013 4:54 pm
by WSL
Obrigado!

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Wed Dec 14, 2016 6:10 pm
by Ewr Automação
Boa tarde .
neste exemplo que passaram como poderia alem de mudar o texto mudar a cor de fundo?

Code: Select all

if (Sender.Screen.StaticText_001.Caption ~= 'ligado') then

  Sender.Screen.StaticText_001.Caption = 'ligado'
 
else

  Sender.Screen.StaticText_001.Caption = 'desligado'
  
end

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Wed Dec 14, 2016 7:42 pm
by daniel kantor
Boa tarde,

Não é possível modificar a cor de fundo pelo Script. Você pode já deixar uma cor de fundo dela nas configurações.

Att,
Daniel Kantor

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Thu Apr 27, 2017 12:36 pm
by fdavid
Normalmente acesso os objetos da seguinte forma:

Code: Select all

src = Sender.Screen
src.Objeto.Caption = "descricao"
Isso para quando o objeto esta no mesmo screen, mas quando um script vai ser disparado por um Screen e o Objeto está em outro acredito que tenha que colocar o caminho completo, assim:

Code: Select all

Viewer.Screens.ScreenGroup.Screen001.Objeto.Caption = "descricao"
Mas não está alterando, é dessa forma mesmo?
Tentei fazer:

Code: Select all

src = Sender.Screen
src.Objeto.Caption = src
Para ver o caminho completo mas não aparece nada, como proceder?

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Fri Apr 28, 2017 2:25 pm
by daniel kantor
Bom dia, David,

Para chamar um objeto que não está na tela que o script foi chamado, é necessário fazer um Screens.Get.
Mais informações sobre ele você encontra nesse link:
http://doc.hitecnologia.com.br/hiscada_ ... telas.html

Com isso, você faria:

Code: Select all

scr = Screens.Get('apelido')
scr.Objeto.Caption = 'nome'
Isso só funcionará caso a tela esteja aberta. Não é possível puxar um objeto que a tela não esteja aberta.

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Fri Apr 28, 2017 2:42 pm
by fdavid
E se estiverem na mesma tela não funciona, por exemplo:

Code: Select all

scr = Screens.Get("Viewers.Screens.ScreenGroup.Main")
scr.Objeto.Caption = "blablablabla"

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Fri Apr 28, 2017 2:57 pm
by daniel kantor
O Screens.Get usa o nome que você definiu para a tela ao abrir pelo Screens.Open.

Mais informações sobre essas duas funções você encontre em:
http://doc.hitecnologia.com.br/hiscada_ ... telas.html

Por exemplo:

Code: Select all

local ret = Screens.Open("MinhaTela", "Viewers.Screens.grupo1.Tela2")
local scr = Screens.Get("MinhaTela")
scr.Objeto.Caption = 'ava'

Re: Como alterar propriedade de um objeto via Script LUA

Posted: Fri Apr 28, 2017 6:32 pm
by fdavid
Porque esse código funciona:

Code: Select all

local scr=Sender.Screen
scr.LogOper.Caption = scr.Name
Retorna Main

E esse código não funciona:

Code: Select all

local scr=Screens.Get("Main")
scr.LogOper.Caption = "teste"
Não funciona

Se colocar o path completo também não funciona

Code: Select all

local scr=Screens.Get("Viewers.Screens.ScreenGroup.Main")
ou alterar diretamente:

Code: Select all

Viewers.Screens.ScreenGroup.Main.LogOper.Caption = "teste"
Tanto o botão que dispara o script quanto o StaticText estão na tela Main.