Gerador de relatórios banded open-source para Delphi (VCL) — uma alternativa livre e gratuita ao FastReport / QuickReport / Rave.
A free & open-source banded report generator component for Delphi (VCL).
ReportsHowie é um componente para o Delphi (a partir do Community 12.1 Athens) que permite:
- Em tempo de desenvolvimento (design-time): um designer visual onde você posiciona os campos livremente, com ancoragem, alinhamento e snap-to-grid fáceis; insere imagens; conecta a bancos de dados; cria bandas, tabelas, fórmulas e agregações.
- Em tempo de execução (runtime): preview e exportação para PDF, HTML, DOCX e XLSX.
- Envio por e-mail do relatório gerado.
- VCL, Windows-nativo — a base clássica e mais confortável para designers de relatório.
- Zero dependências externas — os exportadores (PDF, OOXML, HTML) são escritos em Pascal puro, usando apenas o que já vem com o Delphi (RTL,
System.Zip,System.ZLib, GDI/Vcl.Graphics, Indy para SMTP). TDataSetgenérico — funciona com FireDAC, ADO, dbExpress, ClientDataSet… sem acoplar a nenhum driver.- Uma engine de renderização compartilhada — o preview na tela e todos os exports partem exatamente da mesma display list, garantindo WYSIWYG.
- Pronto para IA (AI-native) — o template é um JSON (
.rhr) limpo e serializável, pensado para ser gerado e editado por LLMs. Um futuro servidor MCP (+ CLIrhtool) permitirá que assistentes como Claude, ChatGPT e Gemini criem, validem e renderizem relatórios diretamente, reutilizando o próprio motor de expressões e os exportadores. Ver roadmap (Fase 12).
✅ v0.1.0 — primeiro lançamento público. O componente é usável: montar relatórios
por código ou pelo designer, ligar a TDataSet, pré-visualizar (janela ou controle
embutível TrhPreviewControl) e exportar para PDF/HTML/XLSX/DOCX + e-mail. Veja o
roadmap, o CHANGELOG e as releases.
Requisitos: RAD Studio / Delphi 12.1 Athens (ou versão compatível) com a personalidade VCL.
Opção A — código-fonte (recomendada para desenvolvimento):
- Clone o repositório:
git clone https://github.com/howardroatti/ReportsHowie.git
- Abra
packages/ReportsHowieGroup.groupprojno IDE. - Build o
ReportsHowieRT(runtime) e depois Install oReportsHowieDT(design-time). - O componente TrhReport aparecerá na paleta na página ReportsHowie.
Opção B — BPLs pré-compilados (anexos de cada release):
baixe o .zip da sua versão do Delphi, instale o ReportsHowieDT<sufixo>.bpl em
Components → Install Packages, e redistribua o ReportsHowieRT<sufixo>.bpl com a sua app.
Compilação por linha de comando (usada na CI com RAD Studio completo):
msbuild packages/ReportsHowieGroup.groupproj /t:Build /p:Config=Release /p:Platform=Win32Para publicar uma nova versão, veja RELEASING.md.
A API abaixo é o alvo das próximas fases; hoje
TrhReporté o esqueleto instalável.
uses rh.Report;
var
Rep: TrhReport;
begin
Rep := TrhReport.Create(nil);
try
Rep.LoadFromFile('vendas.rhr'); // template desenhado no designer
// Rep.DataLinks['Master'].DataSet := qryVendas; // TDataSet genérico
Rep.ShowPreview; // preview VCL
Rep.ExportToFile('vendas.pdf'); // PDF / HTML / DOCX / XLSX
// Rep.SendByEmail(...); // via Indy SMTP
finally
Rep.Free;
end;
end;- 📘 Manual de uso (online) — versão HTML navegável com índice lateral, busca e prints (GitHub Pages). Também no repo: docs/index.html e em Markdown MANUAL.md.
- Cobre: bandas, objetos, expressões, data binding híbrido, agrupamento/agregados e grupos aninhados, banco de dados, preview, exportação, designer e receitas prontas.
- 🏗️ Arquitetura — visão interna do componente.
- 🧩 JSON Schema do
.rhr— contrato do formato (draft-07) para validar/gerar templates em qualquer linguagem e como base para LLMs. - ⌨️
rhtoolCLI — validar, inspecionar e exportar.rhrsem abrir o IDE (base headless do MCP). - 🤖 Servidor MCP — conecte o Claude para criar/validar/renderizar relatórios (reusa o schema +
rhtool).
| Fase | Entrega | Status |
|---|---|---|
| 0 | Esqueleto dos pacotes (RT+DT) + estrutura open-source | ✅ |
| 1 | Modelo de objetos + persistência JSON (.rhr) e DFM |
✅ |
| 2 | Abstração de render + preview VCL | ✅ |
| 3 | Engine de expressões/fórmulas | ✅ |
| 4 | Pipeline de dados (TDataSet, grupos, agregados) |
✅ |
| 4.1 | Grupos aninhados (multi-nível: Cliente › Categoria › … com subtotais por nível) | ✅ |
| 5 | Designer visual em design-time (selecionar/mover/redimensionar, inspetor, guias, alinhar, undo, imagens) | ✅ |
| 5.1 | Vínculo de dados no designer (painel de campos, inserir campo, DataSetName por lista) + Abrir/Salvar .rhr no designer + preview embutida (TrhPreviewControl) |
✅ |
| 5.2a | Data binding híbrido: propriedade DataField no texto (bind simples estilo DB-aware) além das ilhas [expr] |
✅ |
| 5.2b | Drag-to-bind no designer (arrastar campo → objeto) + indicador visual de campo vinculado | ✅ |
| 5.3 | Árvore de estrutura (página→banda→objeto, seleção sincronizada) | ✅ |
| 6 | Export HTML | ✅ |
| 7 | Export PDF | ✅ |
| 8 | Export XLSX e DOCX (OOXML) | ✅ |
| 9 | Envio por e-mail (SMTP via Indy; TLS plugável OpenSSL/SChannel) | ✅ |
| 10 | Designer runtime + release público multi-versão (v0.1.0) | 🚧 |
| 11 | Export ODT / ODS (OpenDocument) — opcional | ⬜ |
| 12.a | rhtool CLI (validate/info/export por linha de comando) + JSON Schema do .rhr |
✅ |
| 12.b | Servidor MCP (Python; tools: schema, funções, validar, info, exportar template) | ✅ |
| 12.c | Adaptadores de IA: ChatGPT (Actions/OpenAPI) e Gemini (function declarations) | ⬜ |
Contribuições são muito bem-vindas! 🎉 Este projeto nasceu para dar à comunidade Delphi um gerador de relatórios gratuito. Leia o CONTRIBUTING.md e o Código de Conduta.
Novo por aqui? Estes são pequenos, bem delimitados e ótimos para começar (cada um traz contexto, tarefa e ponteiros de arquivo):
- #1 — Expressões: funções de string
LEFT/RIGHT/MID/POS/REPLACE - #2 — Demos: novos exemplos (fatura, matricial, mala direta)
- #3 — Designer: restringir a descoberta ToolsAPI a DataModules
- #4 — Docs: seção Getting Started no README
Veja também os issues marcados como good first issue e help wanted.
Distribuído sob a GNU LGPL-3.0 — veja LICENSE (e COPYING.GPL, incorporada por referência).
A LGPL-3.0 permite usar o ReportsHowie em aplicações comerciais e de código fechado quando distribuído como pacote/BPL (linkagem dinâmica). Se você linkar estaticamente as units no seu executável, precisa dar aos usuários finais o direito de re-linkar contra uma versão modificada do componente (ex.: fornecendo os objetos/.dcu ou permitindo recompilação). Melhorias feitas no próprio ReportsHowie devem ser disponibilizadas sob a LGPL.
ReportsHowie © 2026 Howard Roatti e contribuidores.