Gerador-de-Programas-Lazarus
README
🚀 Connect Gerador de Programas Lazarus
Gerador RAD profissional de código-fonte em arquitetura MVC para Lazarus e Free Pascal, com engenharia reversa de banco de dados Firebird, múltiplos templates visuais modernos e módulo PDV/PIX integrado.
📋 Sumário
- Visão Geral
- Arquitetura dos Sistemas Gerados
- Catálogo de Templates Visuais
- Recursos Principais
- Estrutura do Repositório
- Requisitos de Ambiente
- Instalação e Compilação
- Banco de Dados de Demonstração
- Histórico de Melhorias e Correções Técnicas
- Contribuindo
- Licença
🌟 Visão Geral
O Connect Gerador de Programas Lazarus é uma suíte completa de desenvolvimento rápido de aplicações (RAD) projetada para transformar a produtividade em projetos Lazarus/Free Pascal.
A ferramenta conecta diretamente ao seu banco de dados relacional Firebird, executa engenharia reversa do catálogo de metadados (tabelas, campos, chaves primárias, tipos de dados e constraints) e gera, em poucos segundos, uma solução corporativa completa, robusta e desacoplada em padrão MVC (Model-View-Controller) com camada DAO.
Além de gerar cadastros CRUD com validações e interfaces ricas, o gerador conta com um ecossistema completo para desenvolvedores:
- Editor de Templates Embutido com realce de sintaxe e autocomplete de tags do motor;
- Assistente (Wizard) de Novos Modelos para criação de temas e estruturas customizadas;
- Biblioteca de Snippets e Componentes Visuais (
ConnectComponents); - PDV com PIX nativo sem dependência de bibliotecas externas para geração de QRCode.
🏛 Arquitetura dos Sistemas Gerados
Os sistemas criados pelo gerador adotam princípios sólidos de engenharia de software (Clean Architecture / SOLID / OOP), garantindo código legível, de fácil manutenção e testável:
sistemas_gerados/[NomeProjeto]/
????????? model/ -> Entidades POCO tipadas com m??todos de valida????o e serializa????o
????????? dao/ -> Camada de persist??ncia (TDAOBase herdando de TInterfacedObject)
????????? controller/ -> Regras de orquestra????o e media????o View <-> Model <-> DAO
????????? interface/ -> Contratos de interface (IDAO, IController, IModel)
????????? dm/ -> TDataModule centralizado de conex??es e transa????es IBX
????????? view/ -> Telas LCL responsivas e componibilizadas por TFrames
??? ????????? frames/ -> Frames modulares de listagem, pagina????o e formul??rios
??? ????????? pdv/ -> M??dulo Frente de Caixa e sub-m??dulo PIX
????????? utils/ -> Helpers, rotinas matem??ticas, encoders e temasCamadas da Arquitetura (MVC + DAO)
- Model (
uModel*.pas):- Representa fielmente a entidade de dados.
- Atributos privados com
propertys tipadas em Pascal. - Construtores, destrutores, métodos de validação de regras de negócio (
Validar), clonagem (Clone) e exportação JSON.
- Interface (
uInterfaces*.pas):- Define os contratos estritos de comunicação entre componentes.
- Permite inversão de controle (IoC) e facilita a criação de mocks para testes unitários.
- DAO (
uDAO*.paseuDAOBase.pas):- Herança sólida de
TDAOBase = class(TInterfacedObject). - Gerenciamento seguro de
TIBQueryeTIBTransactioncom fechamento automático de cursores e tratamento de erros. - Prevenção nativa contra SQL Injection por meio de consultas 100% parametrizadas.
- Métodos prontos:
Inserir,Alterar,Excluir,BuscarPorID,ListarTodos,Filtrar.
- Herança sólida de
- Controller (
uController*.pas):- Camada orquestradora que desacopla a interface visual da lógica de persistência.
- Valida os dados antes de submeter ao DAO e emite notificações de estado para a View.
- View (
uView*.paseuFr*.pas):- Construída utilizando componentes nativos da LCL e
TFrames embutidos emTScrollBox. - Separação entre tela de listagem (
ViewListacom busca rápida, ordenação e botões de ação) e tela de formulário (ViewFormcom mapeamento type-safe de campos). - Suporte a temas visuais com paleta de cores consistente e tipografia moderna.
- Construída utilizando componentes nativos da LCL e
Módulo PDV e Integração PIX Nativa
O projeto acompanha um módulo de Ponto de Venda (PDV) e integração com o sistema de pagamentos instantâneos PIX (Banco Central do Brasil):
uPixUtils.pas: Geração completa de payload EMV-BR padrão Pix (Código Copia e Cola) e cálculo de redundância cíclica CRC16-CCITT.- Gerador de QRCode Matricial Puro: Motor de desenho de matriz QR em Pascal puro (sem dependência de DLLs ou pacotes externos pesados), desenhado diretamente sobre o canvas do formulário ou componente de imagem.
- Configuração Dinâmica: Permite salvar e carregar configurações de chaves PIX (CPF/CNPJ, E-mail, Celular, Chave Aleatória EVP) via arquivo INI com validações em tempo real.
🎨 Catálogo de Templates Visuais
O gerador fornece 5 templates prontos para uso, cada um com identidade visual exclusiva:
| Template | Descrição Visual | Cenário Indicado |
|---|---|---|
modelo_mvc_simples |
Interface LCL clássica e minimalista, layout direto e direto ao ponto. | Cadastros administrativos rápidos, protótipos e sistemas leves. |
modelo_erp_dashboard |
Design corporativo moderno com sidebar lateral retrátil, cards de KPI dinâmicos e navegação por frames. | Aplicações comerciais completas, ERPs e retaguarda de varejo. |
modelo_erp_midnight |
Tema dark refinado em tons de azul escuro (Midnight Blue) e acentos ciano. | Dashboards analíticos, centros de controle e operação noturna. |
modelo_erp_cyber_dark |
Tema escuro de alto contraste futurista com detalhes vibrantes e botões estilizados. | Softwares modernos de gestão técnica, automação e PDV especializado. |
modelo_erp_indigo |
Visual moderno inspirado nas diretrizes do Tailwind CSS Indigo com tipografia suave e harmônica. | Aplicações corporativas corporativas com apelo visual premium. |
✨ Recursos Principais
- 🔍 Engenharia Reversa Completa do Firebird: Detecção automática de nomes de tabelas, tipos de campos (
VARCHAR,INTEGER,NUMERIC,TIMESTAMP,DATE,BLOB), chaves primárias eNULL/NOT NULL. - ⚙️ Mapeamento Automático de Controles Visuais: Mapeamento inteligente de campos do banco para os respectivos controles da interface:
- Textos ->
TEdit - Inteiros / Contadores ->
TSpinEdit - Valores Monetários / Decimais ->
TEditcom formatação - Datas e Horas ->
TDateTimePicker(via pacoteDateTimeCtrls) - Booleanos ->
TCheckBox
- Textos ->
- 🖥️ Editor de Modelos Integrado (
uFormTemplateEditor): Permite inspecionar e editar os arquivos.tpldiretamente pela aplicação com lista lateral de marcadores de substituição disponíveis. - 🧙 Wizard de Criação de Modelos (
uFormNovoModelo): Assistente passo a passo para criar novos temas e conjuntos de templates. - 📦 Geração de Projeto Lazarus (
.lpie.lpr): Gera os descritores do projeto configurados para Free Pascal, com referências aos pacotes exigidos e caminhos de busca ajustados.
📁 Estrutura do Repositório
????????? GeradorSistemas.lpi # Arquivo de projeto do Gerador (Lazarus)
????????? GeradorSistemas.lpr # Ponto de entrada do Gerador
????????? GeradorSistemas.ini # Arquivo de configura????o de ambiente e banco
????????? banco_modelo_erp.sql # Script DDL do banco de demonstra????o (Firebird 5.0)
???
????????? src/ # C??digo-fonte principal do Gerador de Sistemas
??? ????????? uMain.pas / .lfm # Tela principal do gerador
??? ????????? uGerador.pas # Motor de substitui????o de templates e gera????o de c??digo
??? ????????? uConexao.pas # M??dulo de conex??o com banco de dados
??? ????????? uMetadata.pas # Engenharia reversa e extra????o de cat??logo
??? ????????? uModelos.pas # Gerenciador e carregador de templates
??? ????????? uFormTemplateEditor.* # Editor de templates integrado
??? ????????? uFormNovoModelo.* # Wizard de cria????o de novos modelos
??? ????????? uFormBiblioteca.* # Biblioteca de snippets e modelos
??? ????????? uConfig.pas # Persist??ncia de configura????es
??? ????????? uTypes.pas # Tipos, enums e estruturas globais
???
????????? templates/ # Cole????o de modelos de c??digo-fonte
??? ????????? modelo_mvc_simples/ # Modelo cl??ssico simples
??? ????????? modelo_erp_dashboard/ # Modelo ERP com Dashboard e Sidebar
??? ????????? modelo_erp_midnight/ # Modelo Dark Midnight Blue
??? ????????? modelo_erp_cyber_dark/ # Modelo Dark Futurista
??? ????????? modelo_erp_indigo/ # Modelo Indigo Tailwind
???
????????? Componentes/ # Pacote ConnectComponents para Lazarus
??? ????????? connectcomponents.lpk # Arquivo de pacote instal??vel
??? ????????? ... # Bot??es estilizados, cards e pain??is
???
????????? sistemas_gerados/ # Exemplos de projetos completos gerados
????????? MvcExemplo/ # Exemplo de ERP completo e compil??vel
????????? MvcExemplo.lpi # Projeto principal do sistema gerado
????????? MvcExemplo_PDV.lpi # Projeto do m??dulo PDV / PIX
????????? ...🔧 Requisitos de Ambiente
Para abrir, compilar e utilizar o Gerador de Sistemas e suas aplicações geradas:
- Lazarus IDE: Versão 2.2.0, 3.0 ou superior (64-bit ou 32-bit).
- Free Pascal Compiler (FPC): Versão 3.2.2 ou superior.
- Firebird RDBMS: Versão 3.0, 4.0 ou 5.0 (com a biblioteca cliente
fbclient.dllacessível noPATHdo sistema ou na pasta do executável). - Pacotes Lazarus Requeridos:
LCL(incluso no Lazarus)IBX4Lazarus(instalável via Lazarus Online Package Manager)DateTimeCtrls(incluso no Lazarus emcomponents/datetimectrls)ConnectComponents(localizado na pastaComponentes/deste repositório)
🔨 Instalação e Compilação
1. Compilando o Gerador de Sistemas
Via IDE Lazarus:
- Abra o arquivo
GeradorSistemas.lpino Lazarus. - Selecione o modo de compilação desejado (
DebugouRelease). - Pressione F9 ou clique em Executar -> Compilar.
Via Linha de Comando (lazbuild):
# Compilação em modo Release com otimizações:
lazbuild --build-mode=Release GeradorSistemas.lpi
# Compilação em modo Debug:
lazbuild --build-mode=Debug GeradorSistemas.lpi2. Configurando a Conexão com o Banco
Edite o arquivo GeradorSistemas.ini na raiz do projeto ou configure diretamente na tela inicial do gerador:
[Conexao]
Host=127.0.0.1
Porta=3050
Banco=D:\Bancos\meu_banco.fdb
Usuario=SYSDBA
Senha=masterkey3. Gerando e Compilando uma Nova Aplicação
- Execute o
GeradorSistemas.exe. - Conecte ao seu banco Firebird e selecione as tabelas desejadas.
- Escolha o template visual desejado (ex:
modelo_erp_dashboard). - Clique em Gerar Sistema. O código completo será criado na pasta de saída configurada.
- Para compilar o projeto gerado:
lazbuild "sistemas_gerados/MvcExemplo/MvcExemplo.lpi"
lazbuild "sistemas_gerados/MvcExemplo/MvcExemplo_PDV.lpi"🗄 Banco de Dados de Demonstração
O repositório inclui o script SQL completo banco_modelo_erp.sql contendo a estrutura relacional de exemplo para testes imediatos:
- Tabela
EMPRESA: Dados cadastrais da empresa emissora; - Tabela
CLIENTES: Cadastro completo de clientes físicos/jurídicos; - Tabela
PRODUTOS: Cadastro de itens com controle de estoque e preços; - Tabela
VENDASeVENDAS_ITENS: Estrutura mestre-detalhe para operações comerciais; - Tabela
PAGAMENTOS_PIX: Histórico de transações PIX geradas.
Para criar o banco de teste no Firebird via isql:
isql -user SYSDBA -password masterkey
CREATE DATABASE 'localhost:C:\Bancos\banco_erp.fdb' page_size 8192 user 'SYSDBA' password 'masterkey';
INPUT 'banco_modelo_erp.sql';
COMMIT;
EXIT;🛠 Histórico de Melhorias e Correções Técnicas
Durante o ciclo recente de revisão e garantia de qualidade (QA), as seguintes melhorias estruturais foram implementadas em 100% da base de código:
- Compatibilidade Integral com Free Pascal 3.2.2:
- Eliminação de declarações de variáveis inline (
var X: Tipo := ...;) emuPixUtils.paseuViewPixConfig.pas, adotando blocosvarpadronizados compatíveis com a sintaxe oficial do compilador FPC.
- Eliminação de declarações de variáveis inline (
- Herança e Gestão de Memória em DAOs:
- Ajuste de
TDAOBaseem todos os templates para herdar explicitamente deTInterfacedObject, assegurando a implementação correta de_AddRef,_ReleaseeQueryInterface.
- Ajuste de
- Desacoplamento Seguro de Interfaces nos Controllers:
- Correção de typecasts indevidos de interfaces sem GUID no Controller (
as IDAO...), prevenindo erros de compilação em tempo de projeto.
- Correção de typecasts indevidos de interfaces sem GUID no Controller (
- Mapeamento Type-Safe na Geração da Interface:
- Implementação das macros
{{CAMPO_LOAD_UI}}e{{CAMPO_SAVE_UI}}no motor de substituição (uGerador.pas), garantindo conversões seguras para inteiros (StrToIntDef), decimais (StrToFloatDef), datas (StrToDateTimeDef) e booleanos.
- Implementação das macros
- Automação do Pacote
DateTimeCtrls:- Adição automática da dependência do pacote
DateTimeCtrlsno arquivo.lpigerado para telas contendo campos do tipo data/hora.
- Adição automática da dependência do pacote
- Build Modes Otimizados:
- Configuração de modos de compilação
DebugeReleasecom otimização-O3e caminhos de busca de units preservados no arquivoGeradorSistemas.lpi.
- Configuração de modos de compilação
👥 Contribuindo
Contribuições, sugestões e correções são bem-vindas!
- Faça um Fork do projeto.
- Crie uma branch para sua funcionalidade (
git checkout -b feature/MinhaMelhoria). - Commit suas alterações (
git commit -m 'feat: Adiciona novo componente'). - Envie para o branch remoto (
git push origin feature/MinhaMelhoria). - Abra um Pull Request.
📄 Licença
Este projeto está sob licença MIT. Consulte o arquivo LICENSE para mais detalhes.
Desenvolvido com dedicação para a comunidade Lazarus & Free Pascal 🚀

