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 ValoresInstalação ACBr
Apps
Torsoise SVN ACBr Trunk 2 Fortes Report CE 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\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
1º - 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.
2º - Arrume as pontas brancas.
3º - Meios laterais da segunda camada.
Posições Iniciais:
D, C, D’, C’ ou D’, C’, D, C
Finalizando da mesma forma que se arruma as pontas brancas.
4º - Cruz Amarela no Topo
Posições Iniciais:
F, D, C, D’, C’, F’
5º - Topo Amarelo
Posições iniciais:
Se Cruz ponta esquerda com amarelo virado para esquerda.
Demais casos ponta esquerda com amarelo virado pra frente.
Ou peixinho apontado para ponta esquerda.
D, C, D’, C, D, C, C, D’
6º - Duas Pontas
Posições Iniciais:
Face de qualquer cor para baixo.
Com face amarela para frente.
D, C’
D, B, B = L invertido
D’, C
D, B, B = L invertido
D, D
Resultado.
ou
7º - Passo: Final
Posições Iniciais:
Para tráz
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
- 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 > 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
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.