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

.html ›› .html ›› .html ››
Parent Previous Next

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