Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

Gerador-de-Programas-Lazarus

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

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

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:

pascal
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 temas

Camadas da Arquitetura (MVC + DAO)

  1. 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.
  2. 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.
  3. DAO (uDAO*.pas e uDAOBase.pas):
    • Herança sólida de TDAOBase = class(TInterfacedObject).
    • Gerenciamento seguro de TIBQuery e TIBTransaction com 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.
  4. 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.
  5. View (uView*.pas e uFr*.pas):
    • Construída utilizando componentes nativos da LCL e TFrames embutidos em TScrollBox.
    • Separação entre tela de listagem (ViewLista com busca rápida, ordenação e botões de ação) e tela de formulário (ViewForm com mapeamento type-safe de campos).
    • Suporte a temas visuais com paleta de cores consistente e tipografia moderna.

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 e NULL/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 -> TEdit com formatação
    • Datas e Horas -> TDateTimePicker (via pacote DateTimeCtrls)
    • Booleanos -> TCheckBox
  • 🖥️ Editor de Modelos Integrado (uFormTemplateEditor): Permite inspecionar e editar os arquivos .tpl diretamente 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 (.lpi e .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

pascal
????????? 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:

  1. Lazarus IDE: Versão 2.2.0, 3.0 ou superior (64-bit ou 32-bit).
  2. Free Pascal Compiler (FPC): Versão 3.2.2 ou superior.
  3. Firebird RDBMS: Versão 3.0, 4.0 ou 5.0 (com a biblioteca cliente fbclient.dll acessível no PATH do sistema ou na pasta do executável).
  4. Pacotes Lazarus Requeridos:
    • LCL (incluso no Lazarus)
    • IBX4Lazarus (instalável via Lazarus Online Package Manager)
    • DateTimeCtrls (incluso no Lazarus em components/datetimectrls)
    • ConnectComponents (localizado na pasta Componentes/ deste repositório)

🔨 Instalação e Compilação

1. Compilando o Gerador de Sistemas

Via IDE Lazarus:

  1. Abra o arquivo GeradorSistemas.lpi no Lazarus.
  2. Selecione o modo de compilação desejado (Debug ou Release).
  3. Pressione F9 ou clique em Executar -> Compilar.

Via Linha de Comando (lazbuild):

powershell
# Compilação em modo Release com otimizações:
lazbuild --build-mode=Release GeradorSistemas.lpi

# Compilação em modo Debug:
lazbuild --build-mode=Debug GeradorSistemas.lpi

2. Configurando a Conexão com o Banco

Edite o arquivo GeradorSistemas.ini na raiz do projeto ou configure diretamente na tela inicial do gerador:

ini
[Conexao]
Host=127.0.0.1
Porta=3050
Banco=D:\Bancos\meu_banco.fdb
Usuario=SYSDBA
Senha=masterkey

3. Gerando e Compilando uma Nova Aplicação

  1. Execute o GeradorSistemas.exe.
  2. Conecte ao seu banco Firebird e selecione as tabelas desejadas.
  3. Escolha o template visual desejado (ex: modelo_erp_dashboard).
  4. Clique em Gerar Sistema. O código completo será criado na pasta de saída configurada.
  5. Para compilar o projeto gerado:
powershell
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 VENDAS e VENDAS_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:

bash
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 := ...;) em uPixUtils.pas e uViewPixConfig.pas, adotando blocos var padronizados compatíveis com a sintaxe oficial do compilador FPC.
  • Herança e Gestão de Memória em DAOs:
    • Ajuste de TDAOBase em todos os templates para herdar explicitamente de TInterfacedObject, assegurando a implementação correta de _AddRef, _Release e QueryInterface.
  • 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.
  • 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.
  • Automação do Pacote DateTimeCtrls:
    • Adição automática da dependência do pacote DateTimeCtrls no arquivo .lpi gerado para telas contendo campos do tipo data/hora.
  • Build Modes Otimizados:
    • Configuração de modos de compilação Debug e Release com otimização -O3 e caminhos de busca de units preservados no arquivo GeradorSistemas.lpi.

👥 Contribuindo

Contribuições, sugestões e correções são bem-vindas!

  1. Faça um Fork do projeto.
  2. Crie uma branch para sua funcionalidade (git checkout -b feature/MinhaMelhoria).
  3. Commit suas alterações (git commit -m 'feat: Adiciona novo componente').
  4. Envie para o branch remoto (git push origin feature/MinhaMelhoria).
  5. 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 🚀