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/2024Instalação ACBr
Apps
Instale o Torsoise SVNE 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.0DLLs
.\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
-
Instalação
DOWNLOAD AQUI.-
Instale o git normalmente e caso queira tirar Open "Git Gui Here" execute o comando abaixo.
-
Setar usuario e email
-
Ver configurações
-
Sair da visualização
-
Verificar se já possui chaves SSH
-
Gerar chaves SSH
Apenas aperte Enter duas vezes se não quiser por senhas para usar scripts automatizados.
Abra o Arquivos C:\Users\usuario\.ssh\id_ed25519.pub copie a chave e cole no github em: https://github.com/settings/ssh/new.
-
Testar conexão
-
-
Baixar Reporitório
-
Navegue até um diretório
-
Verificar se há atualizações
-
Atualizar
-
-
Criar Repositório
-
Navegue até a pasta do projeto
-
É necessário adicionar o diretório do projeto ao arquivo "C:\Users\seu_usuario\.gitconfig".
-
Colocar arquivos na fila
-
Tirar arquivos da fila (cancelar)
-
Salvar arquivos no repositório local
-
Ver o branch selecionado
-
Setar um branch
-
ver a url destino no GitHub configurada
-
Adicionar um enderereço de repotitório do GitHub
-
Altera a url destino caso já esteja configurada
-
Envia as alterações para o "main" ou "master" do GitHub
-
Verifica se está sinconizado com o GitHub
-
-
Automação
Para Mandar
-
Crie um arquivo "Mandar.bash".
-
Clique com o dotão direito do mouse e coloque Abrir com.
-
Crie um arquivo "Receber.bash".
Para Receber
-
Configurações
IDE
- Ambiente > Inicialização da IDE > Abrir o último projeto = False
- Ambiente > Cópia de Segurança = Sem arquivo de segurança
- Ambiente > Nomeação > Salvar como > Sem renomeação automática = True
- Ambiente > Nomeação > Sugerir nome padrão do novo arquivo em minúscula = False
- Ambiente > Inicialização da IDE > Nomeação > Sugerir nome padrão do novo arquivo em minúsculo = False
- Editor > Exibir > Margem direita visíve = 120
- Editor > Exibir > Indicadores de Correspondências > Contorno = True
- Configurações "JCF" > Corrigir > Interrupções de Linha > Tamanho máximo de linha = 130
- Ferramentas de Código > Geral > Saltar diretamente para o corpo do método = True
- Ferramentas de Código > Separação de linhas > Comprimento Máximo de linha = 130
- Ferramentas de Código > Separação de linhas > Não dividir linha na frente de > Símbolo = True
- Depurador > Fechar janela assembler automaticamente após código não encontrado = True
Projeto
- Opções do Projeto > Aplicação > Nível de Execução = Requer Administrador
- Opções do Projeto > Miscelânea > Atualizar a delcaração "Application.Title" no unidade principal = False
- Opções do Projeto > Miscelânea > Atualizar a delcaração "Application.Scaled" no unidade principal = False
- Opções do Compilador > Depeuração > Gerar informações para o depurador = True
- Opções do Compilador > Depeuração > Usar a unidade Heaptcr (-gh) = True
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...
- RLPreviewForm.pas para UTF-8
- 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
- RLReport
- É o objeto principal com formato de pagina que recebe todos os demais componentes.
- RLPDFFilter
- É o componente responsável pela impressão e exportação em PDF, é conectada ao RLReport pela propriedade DefaultFilter.
- DataSource
- É fundamental que a consulta principal do banco de dados esteja no Datasource ligado a propriedade DataSource do RLReport
- BufDataSet
- É o componente que contêm os dados e é ligado ao DataSouce pela propriedade DataSet
- RLBand: BandType = btTitle
- Aparece uma vez na primeira página.
- RLBand: BandType = btHeader
- Aparece em cada página.
- RLBand: BandType = btColumnHeader
- Aparece a cada interação de uma consulta.
- RLBand: BandType = btDetail
- Aparece a cada registro da consulta.
- RLBand: BandType = btSumary
- Usado para exibir resultados de uma consulta.
- RLBand: BandType = btColumnFooter
- Aparece ao final de uma consulta.
- RLBand: BandType = btColumnFooter
- Aparece ao final de cada página.
- RLDetailGrid
- Faz a listagem por colunas configurada nas propriedades ColCount e Organization.
- RLGroup
- Faz interações em consultas agrupadas pelo campo configurado na propriedade DataFields.
- RLSubDetail
- Usado para varias consultas no mesmo relatório atravez de vários DataSources e BufDataSets como por exemplo um relatorio de vendas, itens, pagamentos, parcelas, etc.
- RLDBResult
-
Usado para resultados na BandType = Sumary.
Se estiver enfrentando problemas com somas no RLDBResult, verifique sua consulta SQL e certifique-se de que os campos numéricos estejam sendo tratados corretamente. Você pode precisar usar um CAST para garantir a precisão dos cálculos, por exemplo: CAST(CAMPO as NUMERIC(15,4)).
-
Usado para resultados na BandType = Sumary.
- RLDBText
-
Usado para resultados exibir dados dos campos das consultas.
Ao exibir valores numéricos, é importante aplicar formatação adequada utilizando a propriedade DisplayMask com a máscara "#,##0.00" para garantir que os valores sejam exibidos corretamente, a dica acima ou o CAST(CAMPO as NUMERIC(15,4)).
-
Usado para resultados exibir dados dos campos das consultas.
- RLExpressionParser
- Esse componente pode ser necessário quando algum calculo não estiver funcionando, ele é ligado ao RLReport pela propriedade ExpressionParser.
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
-
Download FPSpreadsheet
Uses fpSpreadsheet, fpsTypes, xlsxooxml;
-
Leitura
-
Escrita
-
Formata Células
-
Scripts .bash
-
Automação para GitHub
-
Limpa arquivos, commita e manda
-
Compila
-
Atualiza
-
Verificar se sistema está aberto (MUTEX)
-
Utilizar esse código no arquivo .lpr logo após o begin.
Configuração Firebird
-
Crian o componente com as configirações adequadas.
Atalhos
- Adicione LCLType em Uses
- Crie um Evento FormKeyDown
Hint no DBGrid
API com fpjson + TFpHttpClient + PHP
Uses: fphttpclient, opensslsockets, fpjson
Dlls: libssl-1_1.dll e libcrypto-1_1.dll
-
Autenticação SSL
Exemplo de Rota PHP para obter usuario e senha.
-
Envia e recebe os dados pelo Lazarus
-
-
Envio de múltiplas linhas
-
Exemplo de Rota PHP
-
Envia os dados pelo Lazarus
-
-
Recebimento de múltiplas linhas
-
Exemplo de rota PHP
-
Recebimento pelo Lazarus
-
-
Enviar arquivo para o servidor
-
Exemplo de Rota PHP
-
Envio pelo Lazarus
-
-
Envio de dados via POST
-
Exemplo de Rota PHP
-
Envio pelo Lazarus
-