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!
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022