Catalog · How the catalog works
PaginationGrid
A unit containt an utility class to manager pagination Grid data.
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
TPagination for Delphi
TPagination é uma classe Delphi simples e reutilizável para controle de paginação
de dados em DBGrid, StringGrid ou qualquer listagem visual.
Ela permite definir o número máximo de linhas por página, calcular total de páginas,
navegar entre páginas e — opcionalmente — atualizar um painel (TPanel) com o status atual.
✨ Recursos
- Controle de página atual, total de registros, total de páginas e offset SQL.
- Dois construtores (
Create):- Um simples, apenas com o número máximo de linhas.
- Outro com painel (
TPanel) e legenda automática.
- Métodos para avançar e retroceder páginas.
- Integração fácil com queries SQL.
- Pode ser usada com qualquer componente visual.
🧱 Estrutura da Classe
TPagination = class
private
procedure SetVisible();
procedure SetCaption();
public
MaxRows: Integer;
TotalRecords: Integer;
TotalPages: Integer;
CurrentPage: Integer;
Offset: Integer;
PanelCaption: string;
PanelVisible: Boolean;
Panel: TPanel;
function SetPagination(AInitialPage: Integer = 1): Integer;
function Rewind(): Integer;
function Skip(): Integer;
constructor Create(AMaxRows: Integer); overload;
constructor Create(AMaxRows: Integer;
var APanel: TPanel; ACaptionPanel: string = ''); overload;
end;🚀 Exemplo de Uso Criando e usando a classe
uses
UnitPagination, // onde TPagination foi declarada
Vcl.ExtCtrls, Data.DB, FireDAC.Comp.Client;
var
Paginator: TPagination;
Query: TFDQuery;
begin
// Exemplo 1: sem painel
Paginator := TPagination.Create(20); // 20 linhas por página
// Exemplo 2: com painel
Paginator := TPagination.Create(20, PanelPagination, 'Página: ');
// Total de registros (obtido de um COUNT no banco)
Paginator.TotalRecords := 1250;
// Configura e calcula as páginas
Paginator.SetPagination(1);
// Usando no SQL:
Query.Close;
Query.SQL.Text :=
'SELECT * FROM CLIENTES ' +
'ORDER BY ID ' +
Format('LIMIT %d OFFSET %d', [Paginator.MaxRows, Paginator.Offset]);
Query.Open;
// Avançando uma página
Paginator.Skip();
Query.SQL.Text :=
'SELECT * FROM CLIENTES ' +
'ORDER BY ID ' +
Format('LIMIT %d OFFSET %d', [Paginator.MaxRows, Paginator.Offset]);
Query.Open;
// Retrocedendo
Paginator.Rewind();
// Exibindo dados atuais
ShowMessage(Format('Página %d de %d',
[Paginator.CurrentPage, Paginator.TotalPages]));
// Liberação
Paginator.Free;
end;🧮 Como funciona Propriedade Descrição MaxRows Quantidade máxima de linhas por página TotalRecords Total de registros retornados do banco TotalPages Total de páginas calculadas automaticamente CurrentPage Página atual Offset Posição inicial para o SQL (LIMIT ... OFFSET) PanelCaption Texto exibido no painel (opcional) PanelVisible Define se o painel deve ser visível Panel Painel usado para exibir o status da página
🧩 Exemplo de SQL Paginado
SELECT *
FROM PRODUTOS
ORDER BY NOME
LIMIT :MaxRows OFFSET :Offset;Query.ParamByName('MaxRows').AsInteger := Paginator.MaxRows; Query.ParamByName('Offset').AsInteger := Paginator.Offset;
🔧 Métodos Principais Método Descrição SetPagination(AInitialPage) Calcula total de páginas e inicia na página indicada Skip() Avança uma página Rewind() Retrocede uma página
🧾 Licença
Este projeto está licenciado sob os termos da Apache License 2.0
💡 Dica
Unit pode ser adiconada através do Boss. -- boss init -- boss instal https://github.com/mak58/PaginationGrid
Use a propriedade Offset diretamente no seu SQL para paginar registros sem precisar refazer cálculos. A classe TPagination mantém tudo sincronizado automaticamente.
🧑💻 Autor
[Marcio Koehler] Delphi Developer 📧 [marcio_koehlerl@live.com]
🌐 GitHub: github.com/mak58

