Desenvolvimento de Sistemas para Automação Comercial

Pascal

Instalação ACBr - Atualizado (15/03/2024) POO Configuração do componente ACBrNFe Suspender Evento Temporariamente BufDataSet Traduzir botões Acesso MariaDB com MySQL56Connection 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 Consumo API JSON POST com FormPost do TFPHTTPClient Colorir DBGrid Pagar várias parcelas com juros proporcional Carregar Imagem do Banco de Dados Loopings Form Transparente Solução do Cubo Mágico 3X3 Configurações - Atualizado (03/03/2024) Problemas com acentuação Fortes Report Zebrado Fortes Report Formatar Valores

Instalação ACBr

Apps
Torsoise SVN ACBr Trunk 2 Fortes Report CE 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\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\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


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


Consumo API JSON POST com FormPost do TFPHTTPClient


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.


Solução do Cubo Mágico 3X3

- Coloque a cruz branca na primeira camada alinhadas com os meios da segunda camada e deixe sempre o centro branco virado para baixo exceto no 6º passo.


- Arrume as pontas brancas.


- Meios laterais da segunda camada.

Posições Iniciais:

Cubo Laterais Centro ou Cubo Laterais Centro

D, C, D’, C’      ou      D’, C’, D, C

Finalizando da mesma forma que se arruma as pontas brancas.


- Cruz Amarela no Topo

Posições Iniciais:

Cruz amarela ou Cruz amarela

F, D, C, D’, C’, F’


- Topo Amarelo

Posições iniciais:


Se Cruz ponta esquerda com amarelo virado para esquerda.

Topo amarelo

Demais casos ponta esquerda com amarelo virado pra frente.

Topo amarelo

Ou peixinho apontado para ponta esquerda.

Topo amarelo

D, C, D’, C, D, C, C, D’


- Duas Pontas

Posições Iniciais:


Face de qualquer cor para baixo.

Duas Pontas ou Duas Pontas

Com face amarela para frente.

Duas Pontas

D, C’

D, B, B = L invertido

D’, C

D, B, B = L invertido

D, D


Resultado.

Duas Pontas Duas Pontas Duas Pontas Duas Pontas

ou

Duas Pontas Duas Pontas Duas Pontas Duas Pontas

- Passo: Final

Posições Iniciais:


Para tráz

Duas Pontas ou Duas Pontas

Caso não tenha uma face completa para deixar virada para tráz, pode colocar qualquer face e executar a sequencia a seguir até que haja uma face completa para se colocar para tráz.

Quando se tiver uma face completa para tráz apenas uma sequencia bastará para finalizar o cubo.

F, F = Deixando o meio diferente para baixo

C’ ou C = Para alinhar o meio de cima com o meio do centro

M = Colocar o meio Mara cima

C, C

M’ = Colocar o meio para baixo e finalizar com

C,F,F


Configurações

IDE
Projeto

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