Criando controles de paginação para Datawindows (PowerBuilder)

Neste post vou mostrar como incluir controles de paginação na janela. Aqueles botões que ajudam você a navegar por longas listas de dados (botões Primeiro, Anterior, Próximo e Último).

Note que este post mostra como fazer isso sem alterar a configuração da Datawindow. O que faremos é utilizar funções nativas da DW e fazer com que ele mostre determinada ‘pagina’ com n resultados. Bom, vamos começar…

 

Primeiro, crie uma janela e insira os seguintes controles nela:

  1. Objeto DataWindow (dw_1);
  2. Um botão para função “Primeira Página” (cb_first);
  3. Um botão para função “Página Anterior” (cb_prev);
  4. Um botão para função “Próxima Página” (cb_next);
  5. Um botão para função “Última Página” (cb_last);

 

Configure o data object da dw_1 da forma que preferir.

Insira o seguinte código para o botão cb_first:

dw_1.ScrollToRow(1)

Este comando vai retornar a DataWindow para a primeira linha.

 

Insira o seguinte código para o botão cb_prev:

dw_1.ScrollPriorPage()

Este comando tenta “retornar” para a página anterior a que está sendo exibida.

 

Insira o seguinte código para o botão cb_next:

dw_1.scrollNextPage()

Este comando irá tentar passar para a próxima página de relatório.

 

Insira o seguinte código para o botão cb_last:

dw_1.ScrollToRow(dw_1.rowcount())

Esta é a mesma função que inserimos no cb_first, mas agora estamos fazendo com que ela vá para a última linha da datawindow.

 

 

Agora vem a pergunta: OK, você está paginando os resultados da DataWindow, mas onde configuro a quantidade de registros por página?

Bom, existe uma boa e uma má notícia: Você não define explicitamente a quantidade de linhas. O que é considerado aqui como “página” são as linhas exibidas pela DW, ou seja, se ela exibir 10 linhas na tela, cada página terá 10 linhas e quando o usuário clicar no botão cb_next, o PB irá exibir os próximos 10 registros.

 

Isso pode ser inconveniente, dependendo da situação, mas pode ajudar o usuário a navegar pelos dados.

Para exemplificar, coloquei o fonte de exemplo da janela e o workspace no meu github.

 

Espero ter ajudado!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, PowerBuilder and tagged , , .