Desenvolvimento de Sistemas para Automação Comercial

Buscar em tutoriais

Pascal

Instalação ACBr - 16/01/2025Git e GitHub - 01/01/2025Configurações - 23/12/2024POO - 12/08/2024Configuração do componente ACBrNFe - 12/08/2024Suspender Evento Temporariamente - 12/08/2024BufDataSet - 12/08/2024Traduzir botões - 12/08/2024Acesso MariaDB com MySQL56Connection - 12/08/2024Acesso MariaDB com ZConnection e ZQuery da paleta Zeos Acces - 12/08/2024Limpar Vários Campos ao Mesmo Tempo - 12/08/2024Colocar imagem da Internet e por no Timage com TFPHTTPClient - 12/08/2024Reproduzir Som WAV - 12/08/2024Colorir DBGrid - 12/08/2024Pagar várias parcelas com juros proporcional - 12/08/2024Carregar Imagem do Banco de Dados - 12/08/2024Loopings - 12/08/2024Form Transparente - 12/08/2024Problemas com acentuação - 12/08/2024Fortes Report Zebrado - 12/08/2024Fortes Report Formatar Valores - 12/08/2024Fortes Report Componentes e Dicas - 12/08/2024EXCEL - 12/08/2024Scripts .bash - 12/08/2024Verificar se sistema está aberto (MUTEX) - 12/08/2024Configuração Firebird - 12/08/2024Atalhos - 12/08/2024Hint no DBGrid - 12/08/2024API com fpjson + TFpHttpClient + PHP - 12/08/2024

Instalação ACBr

Apps
Instale o Torsoise SVN

E use o trunk2 do ACBR https://svn.code.sf.net/p/acbr/code/trunk2/


Instale o Git

Adicione "C:\Program Files\Git\bin" as variáveis do sistema para executar scripts .bash usando...

Instale o Fortes Report

Firebird 3.0
DLLs

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

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

.\DLLs\LibXml2\x86\libexslt.dll

.\DLLs\LibXml2\x86\libiconv.dll

.\DLLs\LibXml2\x86\libxml2.dll

.\DLLs\LibXml2\x86\libxslt.dll

Dll de terceiros

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

Configurações

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

Descomentar:

Sequência dos Pacotes

.\fortesreport-ce-master\Packages\frce.lpk

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

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

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

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

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

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

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

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

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

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

.\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrCTe\ACBr_CTe.lpk

.\ACBr\Pacotes\Lazarus\ACBrDFe\ACBrCTe\DACTE\
Fortes\ACBr_CTe_DACTeRL.lpk

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

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

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

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

.\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrTXTComum.lpk

.\ACBr\Pacotes\Lazarus\ACBrTXT\ACBrSPED\ACBr_SPED.lpk


Git e GitHub


Configurações

IDE
Projeto

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


BufDataSet

Criar campos, ordenação e indice.

Buscar parcial.

Inserir Registros

Alterar Registros

Deletar Registros

Armazenar/Obter dados em disco


Traduzir botões

Edite 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.


Acesso MariaDB com MySQL56Connection

Com o componente MySQL56Connection e SQLQuery nativos do Lazarus.


Acesso MariaDB com ZConnection e ZQuery da paleta Zeos Acces


Limpar Vários Campos ao Mesmo Tempo


Colocar imagem da Internet e por no Timage com TFPHTTPClient


Reproduzir Som WAV


Colorir DBGrid


Pagar várias parcelas com juros proporcional


Carregar Imagem do Banco de Dados


Loopings

Existem três estruturas de looping: while, repeat e for.

while: É a estrutura de looping mais simples e flexível. O bloco de instruções é repetido enquanto a condição especificada for verdadeira.

repeat: O bloco de instruções é repetido enquanto a condição especificada for falsa.

for: É a estrutura de looping mais comum e é usada quando o número de interações é conhecido antes do tempo.

O loop pode ser interrompido usando a instrução "break" e o controle pode ser passado para a próxima iteração usando a instrução "continue", essas instruções são úteis para controlar o fluxo de um loop e podem ser usadas em qualquer uma das estruturas de looping.


Form Transparente

Para deixar uma Form transparente você pode usar as propriedades "Self.AlphaBlend := True;" e "Self.AlphaBlendValue := 125;", onde o valor de transparência vai de 255 totalmente visível à 0 totalmente invisível.

Para se recortar uma imagem deixando o fundo invisível porem com a imagem visível, deve-se criar uma imagem em .bmp (bitmap) em preto e branco onde o preto será recortado.

E usar os código abaixo.


Problemas com acentuação

No Fortes converter...

  1. RLPreviewForm.pas para UTF-8
  2. RLConsts para ANSI

Nos demais problemas com UTF8 declarar em uses LConvEncoding e manter sempre os arquivos codificados em UTF8.

Arquivos do ACBr e outros para compatibilidade DELPHI, usam seus arquivos em CP1252, geralmente se usando a função "UTF8ToCP1252" da lib LConvEncoding, geralmente revolve todos os problemas.


Fortes Report Zebrado


Fortes Report Formatar Valores


Fortes Report Componentes e Dicas

RLRichText

Obs. É importante iniciar o texto com ao menos o \fs24 e finaliza-lo com \par para que o fortes calcule o Height da Band e não oculte as últimas linhas.


EXCEL


Scripts .bash


Verificar se sistema está aberto (MUTEX)


Configuração Firebird


Atalhos


Hint no DBGrid


API com fpjson + TFpHttpClient + PHP

Uses: fphttpclient, opensslsockets, fpjson

Dlls: libssl-1_1.dll e libcrypto-1_1.dll

Exemplo no GitHub.