Desenvolvimento de Sistemas para Automação Comercial

Pascal

Instalação e Configuração ACBr POO Configuração do componente ACBrNFe Suspender Evento Temporariamente Configurações Lazarus Traduzir botões Acesso MariaDB

Instalação e Configuração ACBr

Apps

Tortoise => https://tortoisesvn.net/downloads.html

ACBr => svn://svn.code.sf.net/p/acbr/code/trunk2

FortesReportCE => https://github.com/fortesinformatica/fortesreport-ce/trunk

FireBird 2.5 => https://firebirdsql.org/en/firebird-2-5/

DLLs

..\ACBr_Fonts\DLLs\OpenSSL\1.1.1.10\x86\libcrypto-1_1.dll

..\ACBr_Fonts\DLLs\OpenSSL\1.1.1.10\x86\libssl-1_1.dll

..\ACBr_Fonts\DLLs\LibXml2\x86\libexslt.dll

..\ACBr_Fonts\DLLs\LibXml2\x86\libiconv.dll

..\ACBr_Fonts\DLLs\LibXml2\x86\libxml2.dll

..\ACBr_Fonts\DLLs\LibXml2\x86\libxslt.dll

Executáveis de terceiros

..\gbak.exe – para backup firebird

Dll de terceiros

..\libmysql.dll - para conexão com sites

Configurações

..\ACBr_Fonts\Fontes\ACBrComum\ACBr.inc

// Descomente a linha abaixo, se você quer que seu Executável NÃO dependa das DLLs LibXML2, LibXMLSEC, (NÃO RECOMENDADO)

{.$DEFINE DFE_SEM_OPENSSL}

// Comente a linha abaixo, se você quer que seu Executável dependa das DLLs LibXMLSEC (NAO RECOMENDADO)

{$DEFINE DFE_SEM_XMLSEC}

// Descomente a linha abaixo, se você quer que seu Executável NÃO dependa das DLLs LibXML2. (NAO RECOMENDADO)

{.$DEFINE DFE_SEM_LIBXML2}

// Descomente a linha abaixo, se você não utiliza a obsoleta Capicom para Criptografia (RECOMENDADO)

{$DEFINE DFE_SEM_CAPICOM}

// Descomente a linha abaixo, se você não utiliza a obsoleta MSXML para Assinatura de XML (RECOMENDADO)

{$DEFINE DFE_SEM_MSXML}

// Descomente a linha abaixo, se você não deseja adicionar a Dependência da INDY nos seus Projetos

{$DEFINE DFE_SEM_INDY}

Sequência dos Pacotes

...\FortesCE\Packages\frce.lpk

...\ACBr\Pacotes\Lazarus\synapse\laz_synapse.lpk

...\ACBr\Pacotes\Lazarus\ACBrComum\ACBrComum.lpk

...\ACBr\Pacotes\Lazarus\ACBrDiversos\ACBrDiversos.lpk

...\ACBr\Pacotes\Lazarus\PCNComum\PCNComum.lpk

...\ACBr\Pacotes\Lazarus\ACBrOpenSSL\ACBrOpenSSL.lpk

...\ACBr\Pacotes\Lazarus\ACBrIntegrador\ACBr_Integrador.lpk

...\ACBr\Pacotes\Lazarus\ACBrTCP\ACBrTCP.lpk

...\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrDFeComum.lpk

...\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrDFeReportRL.lpk

...\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\ACBr_NFe.lpk

...\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrNFe\DANFE\NFe\
Fortes\ACBr_NFe_DanfeRL.lpk

...\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrMDFe\ACBr_MDFe.lpk

...\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrMDFe\DAMDFE\
Fortes\ACBr_MDFe_DAMDFeRL.lpk

...\ACBr\Pacotes\Lazarus\ACBrSerial\ACBrSerial.lpk


POO

Termos

Abstração: E uma caracteristica da POO que permite passar objetos reais do mundo real para linguagem de programacao.

Polimorfismo: E a capacidade de criar varios metodos com o mesmo nome mas com parametros diferentes;

Encapsulamento: separar o codigo em blocos de codigo.

Métodos

overload; => permitem mesmos metodos com o mesmo nome diferenciando apenas os parametros.

virtual; => permite (sem ser obrigatorio) que a classe herdeira reescreva um metodo criado na classe pai utilizando o override;

override; => usado para adicionar código em um metodo virtual da classe pai na classe filha utilizando o inherited.

virtual; abstract; => pode ser implemantado na classe herdeira com o override, mas nao precisar ser implementado na classe pai.

reintroduce; => utilizado para tirar o warning que avisa que o metodo ja existe na classe pai, dizendo que ele sera reecrito na classe filha ignorando por completo tudo que estiver nesse metodo na classe pai.

class function => cria uma funcao sem a necessidde de instaciar a classe em que ela esta. Obs. Adicionar "static" ao final.

inherited "Metodo"; executa o metodo da classe pai. (o nome do metodo é opcional quando se está dentro do metodo herdado na classe filha)

construtores => utilizado para inicializar variaveis, objetos, etc na criacao da classe(objeto) = constructor Create;

destrutores => e aconselhavel usar o inherited ao final para destrur tudo das clases antecessoras = destructor Destroy;

Visibilidade

strict private => visivel apenas na mesma classe.

private => visivel dentro da propria classe ou de uma classe derivada na mesma unit.

strict protected => visivel apenas pelas herdeiras.

protected => visivel pelas herdeiras e classes da mesma unit.

public => visivel em qualquer lugar.

published => faz aparecer no object inspector.

Parametros de Método

Sem nada = cópia do valor

Var = ponteiro

Out = ponteiro com inicialização (parametro de entrada é ignorado, podendo ser sobrescrito)

Const = cópia do valor sem possibilidade de alteração, isso é uma diretiva a nível de compilação e tem efeito prático só em string, para tipos primitivos isso só não permite a alteração do valor dentro da função, enquanto que pra string isso evita a alocação de uma nova string.

Como Objetos em pascal são sempre ponteiros se pode mudar o objeto mas não o valor base dele.


Configuração do componente ACBrNFe


Suspender Evento Temporariamente



Configurações Lazarus

Em Ferramentas => Opções... => Ambiente

Arquivos: Desmarcar "Abrir o ultimo projeto e pacotes ao iniciar".

Cópia de Segurança: Selecionar "Sem arquivo de Segurança" em ambas opções.

Nomeação: Selecionar "Sem renomeação automatica".


Traduzir botões

Acessar o arquivo => C:\lazarus\lcl\lclstrconsts.pas

Outra forma mais simples e que não precisa fazer toda vez que reinstala o Lazarus é declarar Translations em uses colocar a linha abaixo no FormCreate do Form principal.

Obs.: O arquivo contendo as traduções pode ser de qualquer nome ou extenção mas precisa acompanhar a aplicação.


Acesso MariaDB

Com o componente MySQL56Connection e SQLQuery nativos do Lazarus

Com o componente ZConnection e ZQuery da paleta Zeos Acces