Criando controles de paginação para Datawindows (PowerBuilder)
Overview
Bem-vindo a este tutorial de PowerBuilder, onde você aprenderá a incluir controles de paginação de maneira simples em sua janela! Se você já se pegou navegando por longas listas de dados e pensou que poderia haver uma forma mais eficiente, este post é para você. Acompanhe passo a passo como adicionar e configurar botões de paginação sem mexer nas configurações da Datawindow e melhore significativamente a navegação dos seus dados. Vamos nessa!
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:
- Objeto DataWindow (dw_1);
- Um botão para função “Primeira Página” (cb_first);
- Um botão para função “Página Anterior” (cb_prev);
- Um botão para função “Próxima Página” (cb_next);
- 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!