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:
- Manipulando eventos das tags - Saiba mais como em Tratando eventos do Lua Form.
- Usando a Tag script.
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