Como alterar propriedade de um objeto via Script LUA

WSL
Posts: 21
Joined: Wed Apr 10, 2013 12:00 pm

Como alterar propriedade de um objeto via Script LUA

Post 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!
infante
Posts: 1
Joined: Thu Jan 31, 2013 4:31 pm
Location: Av. Dr. Armando de Sales Oliveira, 445, Taquaral - Campinas - SP - Brasil

Re: Como alterar propriedade de um objeto via Script LUA

Post 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!
Attachments
testeobj.H7G
Projeto Exemplo para acesso a atributos de objetos.
(7.4 KiB) Downloaded 617 times
Lucas M. V. Infante
Analista de Sistemas de Informática

HI Tecnologia - Indústria e Comércio Ltda
Campinas - SP
Fone: +55 (19) 21391700
Fax: +55 (19) 21391710
Email: lucas.infante@hitecnologia.com.br
Web-site: http://www.hitecnologia.com.br
WSL
Posts: 21
Joined: Wed Apr 10, 2013 12:00 pm

Re: Como alterar propriedade de um objeto via Script LUA

Post by WSL »

Obrigado!
Ewr Automação
Posts: 9
Joined: Mon Dec 12, 2016 12:10 pm
Location: Guarulhos

Re: Como alterar propriedade de um objeto via Script LUA

Post 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
daniel kantor
Posts: 28
Joined: Fri Feb 19, 2016 6:12 pm

Re: Como alterar propriedade de um objeto via Script LUA

Post 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
fdavid
Posts: 31
Joined: Tue Jul 19, 2016 1:40 pm

Re: Como alterar propriedade de um objeto via Script LUA

Post 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?
daniel kantor
Posts: 28
Joined: Fri Feb 19, 2016 6:12 pm

Re: Como alterar propriedade de um objeto via Script LUA

Post 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.
fdavid
Posts: 31
Joined: Tue Jul 19, 2016 1:40 pm

Re: Como alterar propriedade de um objeto via Script LUA

Post 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"
daniel kantor
Posts: 28
Joined: Fri Feb 19, 2016 6:12 pm

Re: Como alterar propriedade de um objeto via Script LUA

Post 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'
fdavid
Posts: 31
Joined: Tue Jul 19, 2016 1:40 pm

Re: Como alterar propriedade de um objeto via Script LUA

Post 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.
Post Reply