Pular para conteúdo

Orientações ao usar código LUA em um Lua Form

Usando código LUA em um Lua Form.

 

Você pode usar códigos LUA (veja A linguagem de programação LUA) em seus Lua Forms de 2 maneiras:

 

 

Mas para usar de forma adequada é importante você saber as características e comportamento do código LUA em um Lua Form.

 

1 - Instâncias

 

Um Lua Form pode ser instanciado várias vezes (veja Lua Form e Instâncias), isto é, é perfeitamente possível existir mais de 1 "cópia" de um Lua Form rodando ao mesmo tempo. Seu código deve estar apto a lidar com esta situação!

 

A variável "self" representa a instância do Lua Form em que o código está executado.

2 - Acessando as tags/controles via programação.

 

Cada instância do Lua Form possui sua própria "cópia viva" das tags e, se você quiser acessar uma tag/controle via programação, você precisará identificar de qual Lua Form é o controle que deseja ter acesso.

 

Para identificar um controle do próprio Lua Form, você deve usar "self.". \ Em 99% dos casos que precisar acessar as tags via programação, você provavelmente usará "self.".

 

Exemplo:

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<label name="labMeuLabel" left="20" top="20" text="Meu Texto!" />          \<button text="Clique" left="20" top="50"                 onClick="self.labMeuLabel.text = 'Cliquei no Botão'"/> \</form>

 

Importante: Um erro ocorrerá se tentar acessar uma tag/controle sem usar "self." (ou outra forma de identificar o Lua Form).

 

3 - Declarando funções

 

Você pode usar a tag script para declarar funções, mas você deve usar o modificador "local" nestas funções para que não haja confusão entre as diversas instâncias do Lua Form.

Não usar o modificador "local" nas declarações de funções causa confusão entre as instâncias do form, já que se trataria de uma função global a todas as instâncias.

 

Exemplo de declaração:

 

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<script>                 local function exibirMensagem()                                 local texto = "";                          for i = 1, 5, 1 do                                 texto = texto .. "Linha " .. i .. "\n";                         end;                                                showMessage(texto);                 end;         \</script>          \<button name="btnMeuBotao" text="Meu Botão" onClick="exibirMensagem()"/> \</form>

 

 

Você também pode declarar funções ligadas à instância para evitar os mesmos problemas:

 

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<script>                 function self.exibirMensagem()                         showMessage('Olá Mundo');                 end;         \</script>          \<button onClick="self.exibirMensagem();"/> \</form>

 

 

4 - Acessando o Nodo do NodeDatabase associado à instância do LuaForm

Cada instância de LuaForm pode estar associada a um objeto nodo de um NodeDatabase (ver NodeDatabase e Lua Form e NodeDatabase). 

A variável "sheet" contém este objeto nodo associado e você pode usá-lo via programação.

 

Exemplo de uso:

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<button onClick="sheet.campoDeForca = 8;"/> \</form>

 

 

 

 

 


Created with the Personal Edition of HelpNDoc: Streamline your documentation process with HelpNDoc's WinHelp HLP to CHM conversion feature