Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

RouteControl

Visando problemas de controle de gerenciamento de formulários abertos no projeto delphi para aplicativos mobile principalmente, decidi implementar algo próximo as rotas existentes hoje em algumas linguagens web.

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Route Control

Este recurso foi desenvolvido para facilitar o controle, transação e gerenciamento das telas abertas dentro de seu aplicativo. Ele foi baseado no estilo e funcionamento das rotas de linguagens web.

Projetos em produção com este recurso

Novo projeto -> Como utilizar

Declaração e instanciação

1 - Crie um projeto em branco com apenas um form.

2 - Importe em seu projeto a unit "route.controller.pas".

3 - Adicione nas uses do form a unit "route.controller".

4 - Adicione em seu projeto também o "frame.pai.pas". Ele será utilizado para criação das próximas telas de seu sistema com o recurso da herança.

5 - Declare uma variável do tipo "TRouteControl":

image

pascal
  route := TRouteControl.Create(Self);

6 - Em um dos eventos de abertura do form, instancie a variável criada passando de parâmetro um componente visual que herda do TComponent (TLayout/TRectangle) ou o único formulário do projeto (Self):

image

7 - Crie um novo frame herdando o FramePai, como por exemplo "FrameCliente";

8 - Adicione o nome da uses do novo frame criado no form;

9 - Declare uma constante do tipo string com o nome da rota que será utilizada para abrir o frame recém criado de qualquer tela dentro do sistema:

image

10 - Adicione o TFrame criado juntamente com a constante que você declarou como sendo o nome da rota dentro da variável "route":

image

pascal
  route.Add(routeCliente, TFrmCliente);

Cada novo frame criado dentro do projeto que você desejar utiliza-lo como tela de exibição de conteúdo, você precisará repetir os passos "7, 8, 9 e 10".

Este é o processo de declaração e instanciação deste recurso.

Eventos disponíveis e disparados do frame

Eventos padrões do frame

  • OnEnter -> Este evento do frame é disparado ao ser exibido o frame;
  • OnExit -> Este evento do frame é disparado antes de outro frame sobrepor o frame atual sobre a tela;
  • OnKeyUp -> Este evento do frame é disparado quando algum botão é pressionado;

Eventos implementados: Eles precisam ser sobreescritos nos frames filhos que desejam utiliza-los

  • OnKeyboardShown -> Este evento é disparado apenas quando o teclado virtual é exibido sobre a aplicação (utilizado no mobile);
  • OnKeyboardHidden -> Este evento é disparado apenas quando o teclado virtual estava visível e foi escondido (utilizado no mobile);
  • SetParams -> Este evento é disparado caso for passado algum parâmetro no procedimento Open, Back e Clear da classe TRouteControl;
  • OnReturn -> Este evento é disparado somente na situação:
pascal
  Frame1 est?? aberto;
  Frame1 abriu o Frame2;
  Frame2 executou todo seu fluxo;
  Frame2 fechou e voltou para o Frame1 retornando par??metros na propriedade IRouteParams;
  Frame1 executar?? o evento "onReturn" independente do status atual da propriedade "FrameState" do frame1;

Transações entre telas

Exibir um frame na tela (Equivalente ao form.show ou form.showModal)

Ao utilizar este recurso da classe "TRouteControl", você estará carregando um frame para ser exibido dentro do componente herdado do TControl que está dentro de seu form.

Procedure: Open();

Parâmetros:

  • route -> Nome da rota que foi definida no item "11" acima. Parâmetro obrigatório
  • params -> Um objeto onde você adicionará parâmetros que serão repassados para o frame executar alguma ação específica, como abrir um determinado registro, exibir uma determinada informação na tela. Você pode passar quantos parâmetros achar necessário. O evento utilizado para leitura destes parâmetros é o setParams(). Parâmetro opcional
  • effectType -> Este parâmetro é responsável pelo efeito de apresentação do frame em tela. | etNone = Nenhum efeito | etRightToLeft = O frame inicia a apresentação da direita para a esquerda | etBottomToTop = O frame inicia a apresentação de baixo para cima | Parâmetro opcional
pascal
  route.Open(
    'ROUTE/CLIENTE',
    TRouteParams.new
      .AddPair('codigo', 192817)
      .AddPair('nome', 'Jucelino Roman')
      .AddPair('somenteLeitura', true)
  );

Fechar a tela atual e volta para a anterior ou qualquer outra que já esteja aberta

Este recurso serve para voltar para a última tela exibida ou para uma determinada rota que já tenha sido aberta anteriormente.

Procedure: Back();

Parâmetros:

  • route -> Nome da rota que foi definida no item "11" acima e que você deseja voltar para ela. Caso este parâmetro for passado em branco '', por padrão sempre voltará para a penúltima tela que foi aberta.
pascal
  route.Back('');

Fecha o frame exibido em tela e apaga seu ponto de referência da memória

Este recurso é utilizado para esconder e destruir um frame que já tenha sido exibido em seu aplicativo durante a utilização.

Procedure: Clear();

Parâmetros:

  • route -> Nome da rota que foi definida no item "11" acima. Parâmetro obrigatório
  • params -> Um objeto onde você adicionará parâmetros que serão repassados para o frame executar alguma ação específica, como abrir um determinado registro, exibir uma determinada informação na tela. Você pode passar quantos parâmetros achar necessário. O evento utilizado para leitura destes parâmetros é o setParams(). Parâmetro opcional
pascal
  route.Clear(
    'ROUTE/CLIENTE',
    TRouteParams.new
      .AddPair('deleteCustomer', 12312)
  );

image