Pular para conteúdo

Tag template

Tag template

Com esta tag, o programador pode criar seu próprio conjunto de tags do Lua Form que sempre que forem usada, serão substituídas pelo conteúdo do template.

 

Observação: Esta tag não representa um componente do lua form e todas as tags que estão dentro do template só existirão de fato quando o modelo for invocado.

 

Características

Propriedades e atributos

 

Propriedade Tipo Valor Padrão Descrição
name String \<Não há valor padrão> Nome do template. É através deste campo que o programador consegue invocar o modelo posteriormente, usando uma tag de mesmo nome.  O preenchimento deste campo é obrigatório.

 

Definindo e invocando templates

 

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<template name="MinhaTag">                 \<label text="Label da Minha Tag" align="top" horzTextAlign="center"/>         \</template> \</form>

\ Neste exemplo, usando template, nós definimos um modelo chamado MinhaTag.... 

Mas só a definição do template não acarreta em nada! Veja como o exemplo acima fica:

 

Image

 

É preciso invocar o modelo.... 

 

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<template name="MinhaTag">                 \<label text="Label da Minha Tag" align="top" horzTextAlign="center"/>         \</template>          \<MinhaTag/>         \<MinhaTag/>         \<MinhaTag/>         \<MinhaTag/> \</form>

 

Agora invocamos "MinhaTag" 4 vezes... Toda vez que usamos a tag "MinhaTag" no exemplo, ela foi substituída por uma cópia do conteúdo de template.

 

Image

 

 

Se adicionarmos um edit ao template, o resultado mudaria para:

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<template name="MinhaTag">                 \<label text="Label da Minha Tag" align="top" horzTextAlign="center"/>                 \<edit align="top"/>         \</template>          \<MinhaTag/>         \<MinhaTag/>         \<MinhaTag/>         \<MinhaTag/> \</form>

 

 

Image

 

Passando parâmetros para o template

 

É possível passar parâmetros para o template na hora da substituição! Para passar um parâmetro, basta definir um atributo ao invocar o modelo e para usar o parâmetro no modelo, o programador deve usar $(nomeDoAtributo) para a substituição parametrizada.

 

Exemplo:

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<template name="MinhaTag">                 \<label text="Atributo \((titulo)" align="top" horzTextAlign="center"**/\>**                 **\<edit** text="\)(conteudo)" align="top" horzTextAlign="center"/>         \</template>          \<MinhaTag titulo="Força" conteudo="10"/>         \<MinhaTag titulo="Destreza" conteudo="14"/>         \<MinhaTag titulo="Inteligência" conteudo="17"/>        \</form>

 

Image

 

Observação: Quando a tag template é invocada com um corpo texto (Exemplo: \<minhaTag>Corpo Texto\</minhaTag>), um parâmetro chamado "body" é criado com este conteúdo.

 

 

Templates avançados usando LUA na hora da substituição.

É possível criar templates avançados usando A linguagem de programação LUA na hora da substituição. 

Todo comentário de XML dentro de templates são tratados como códigos lua que devem ser executado no momento da substituição!

 

Exemplo:

 

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<template name="Municao">                 \<layout width="\((largura)" height="20" align="top"**\>**                                             **\<label** text="\)(titulo) :" align="left" horzTextAlign="center" width="60"/>                          \<!-- for  i = 1, quantidade, 1 do -->                                           \<checkBox align="left" width="20"/>                                             \<!-- end; -->                 \</layout>         \</template>                \<Municao largura="300" titulo="Flechas" quantidade="20"/>         \<Municao largura="300" titulo="Bombas" quantidade="4"/>         \<Municao largura="300" titulo="Dardos" quantidade="10"/> \</form>

 

Image

 

Neste exemplo, o parâmetro "quantidade" é utilizado em um código LUA para emitir várias vezes a tag \<checkBox> durante o tempo de substituição. Vários checkBox foram emitidos com pouco esforço.

 

Exemplos

Exemplo 1 - Uma pequena ficha usando templates

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                \<template name="LayoutUmCampo">                 \<layout width="64" align="left" margins="{left=2, right=2}">                         \<edit field="\((campo)" height="30" horzTextAlign="center" fontSize="20" align="top"**/\>**                          **\<label** text="\)(titulo)" align="top" horzTextAlign="center"                                 vertTextAlign="leading" autoSize="true"/>                 \</layout>         \</template>          \<layout left="10" top="10" width="200" height="64">                   \<LayoutUmCampo campo="combate.armadura" titulo="Armadura"/>                 \<LayoutUmCampo campo="saude.pontosDeVida" titulo="Pontos de Vida"/>                 \<LayoutUmCampo campo="equipamentos.carga" titulo="Carga (kg)"/>                                 \</layout> \</form>

 

Image

 

Exemplo 2 - Lista de perícias de D\&D 3.5 usando templates

 

\<?xml version="1.0" encoding="UTF-8"?> \<form name="frmFichaTeste">                  \<template name="CampoEmUmLayoutDeCampos">                               \<layout align="top" height="17" margins="{bottom=2}">                         \<checkBox width="17" align="left" margins="{right=5}"/>                         \<label align="left" width="120" text="\((titulo):"                                 horzTextAlign="trailing" margins="{right=5}"**/\>**                         **\<edit** align="left" horzTextAlign="center" fontSize="16" width="64"**/\>**                 **\</layout\>**         **\</template\>**                **\<template** name="LayoutDeCampos"**\>**                 **\<layout** left="20" top="20" width="250" height="800"**\>**                         *\<\!--*                                 *listaDeCampos = totable(body);*                                                                 *for k, v in pairs(listaDeCampos) do*                                         *CampoParaGerar = v;                            *                         *--\>*                                         **\<CampoEmUmLayoutDeCampos** titulo="\)(CampoParaGerar)"/>                         \<!--    *                             *end;                         -->                 \</layout>         \</template>                \<LayoutDeCampos>                 {"Abrir Fechaduras", "Acrobacia", "Adestrar Animais",                  "Arte da Fuga", "Atuação", "Avaliação", "Blefar", "Cavalgar",                  "Concentração", "Conhecimento", "Cura", "Decifrar Escrita",                  "Diplomacia", "Disfarce", "Equilíbrio", "Escalar", "Esconder-se",                  "Falsificação", "Furtividade", "Identificar Magia", "Intimidar", "Natação",                  "Observar", "Obter Informação", "Ofícios", "Operar Mecanismo",                   "Ouvir", "Procurar", "Profissão", "Prestidigitação", "Saltar",                  "Sentir Motivação", "Sobrevivência"}         \</LayoutDeCampos> \</form>

 

Image


Created with the Personal Edition of HelpNDoc: Easily create Qt Help files