Você está aqui: Página Inicial Artigos Kankei DBM Criando telas customizadas de entrada de dados em HTML

Criando telas customizadas de entrada de dados em HTML

As últimas versões do KankeiWeb (e também o KankeiDesktop a partir do build 102) permitem a criação de telas customizadas utilizando módulos e HTML. É possível pedir dados ao usuário através de tags HTML padrão (FORM/INPUT/SELECT, etc), fazer o processamento dos dados informados e exibir o resultado. Também é possível criar links que permitam que o usuário navegue entre os módulos.

A função "Module.Run()" também permite que seja feita uma separação de forma que o código de processamento fique em um módulo e a geração do HTML fique em outro, de forma similar ao modelo de programação conhecido como MVC.

Vamos considerar um problema bem simples, sem muitas aplicações práticas, mas que demonstra bem as capacidades do uso do HTML dentro do Kankei.

Objetivo

Precisa-se de uma tela customizada onde o usuário entre com um nome e um endereço. Ambos os campos devem ser de preenchimento obrigatório. Após o usuário informar estes dados, o sistema deverá exibir os dados preenchidos num formato de tabela, com um link para poder retornar à tela anterior e digitar outro nome e endereço.

Tela inicial:

ModuloHTML-TelaInicial.jpg

Validação dos dados:

ModuloHTML-Validacao.jpg

Resultado:

ModuloHTML-Resultado.jpg

Obs.: Ao clicar em "Voltar", o sistema deve voltar à tela inicial

Solução

Vamos citar a seguir um exemplo de uma operação que será composta por 3 módulos:

- modController => É o módulo principal, responsável por fazer as validações e chamar um dos outros dois quando for adequado;

- modViewParametros => É o módulo que irá gerar o HTML com os campos para o usuário preencher (no caso, nome e endereço) e um botão ENVIAR;

- modViewResultado => É o módulo que irá exibir uma tabela com os dados informados pelo usuário, bem como um link para retornar à tela de parâmetros.

modController

Este módulo deve ser do tipo template, configurado para exibir o resultado como HTML.


<%
if (Parameters('__IsPostBack') != '1') {
  // Esta é a primeira execução, exibir parâmetros
  Module.Run('modViewParametros');
} else {
  // O usuário clicou em ENVIAR
  if (Parameters('nome') == '' || Parameters('endereco') == '') {
    // Campos obrigatórios não preenchidos, exibir parâmetros novamente
    Parameters('mensagem') = 'Nome e endereço são obrigatórios';
    Module.Run('modViewParametros');
  } else {
    // Campos preenchidos corretamente. Exibir resultado
    Module.Run('modViewResultado');
  }
}
%>

A primeira coisa que o módulo faz é testar o parâmetro reservado "__IsPostBack", que serve para determinar se está ocorrendo um "PostBack" (ou seja, se o módulo está sendo executado novamente após o usuário ter pressionado o botão ENVIAR).

Caso não seja postback, é chamada a função Module.Run() para executar o módulo "modViewParametros" que irá gerar o HTML da página inicial. Se for postback, o módulo irá validar os dados que o usuário digitou e voltará a executar o "modViewParametros" caso os dados não sejam válidos; neste caso, uma mensagem é colocada no parâmetro "mensagem", para que o módulo "modViewParametros" saiba que tem uma mensagem de erro a ser exibida. Se os dados forem válidos será executado o módulo "modViewResultado".

modViewParametros

Este módulo deve ser do tipo template, configurado para exibir o resultado como HTML.


<html>
 <body>
  <form name="main" action="<%=K.BD.GetResourceURL('module', Module.Code)%>" method="post">
   Nome:
   <input name="nome" type="text" value="<%=Parameters('nome')%>" />
   <br />
   Endereço:
   <input name="endereco" type="text" value="<%=Parameters('endereco')%>" />
   <br />
   <input type="submit" value="Enviar" />
   <div>
    <%=Parameters('mensagem')%>
   </div>
  </form>
 </body>
</html>

Perceba que a URL a ser informada no atributo "action" da tag "form" deve ser gerada com K.BD.GetResourceURL(). A expressão "Module.Code" irá retornar o identificador do módulo atualmente sendo executado (que neste exemplo é o "modController").

Também é importante que as propriedades "value" das tags "input" sejam informadas desta forma, para mostrar o valor atual dos parâmetros, caso contrário, se o usuário preencher um campo e deixar o outro em branco, o módulo exibirá mensagem de campo não preenchido e o HTML vai ser gerado como no começo, perdendo-se o valor que o usuário informou.

modViewResultado

Este módulo deve ser do tipo template, configurado para exibir o resultado como HTML.


<html>
 <body>
  <table>
   <tr>
    <td>Nome:</td>
    <td>
     <b><%=Parameters('nome')%></b>
    </td>
   </tr>
   <tr>
    <td>Endereço:</td>
    <td>
     <b><%=Parameters('endereco')%></b>
    </td>
   </tr>
  </table>
  <a href="<%=K.BD.GetResourceURL('module', Module.Code)%>">Voltar</a>
 </body>
</html>

Este módulo apenas monta uma tabela com os dados digitados e um link "Voltar". Perceba que a propriedade "href" do link utiliza K.BD.GetResourceURL() para gerar o link de destino, da mesma forma que a tag "form" do módulo "modViewParametros".

O link poderia ser substituído por botão, mas para isso precisaríamos incluir uma tag "form" da mesma que no "modViewParametros", e o "modController" precisaria saber quando este botão tivesse sido clicado para agir de acordo. Então, neste caso é mais simples usar um simples link.

Conclusão

Tendo um pouco de conhecimento em HTML, estes novos recursos do Kankei facilitam bastante a criação de telas customizadas para os mais diversos fins.

Algumas aplicações como o KankeiZila já se utilizam de links entre módulos há algum tempo, mas agora esta funcionalidade está sendo expandida também ao KankeiDesktop, que agora executa localmente o módulo destino ao invés de abrir o KankeiWeb no Internet Explorer.

 

Ações do documento
« Maio 2012 »
Maio
SeTeQuQuSeSaDo
123456
78910111213
14151617181920
21222324252627
28293031
Acessar


Esqueceu sua senha?