Vale a pena conferir !
Transferindo dados via internet feito em Lazarus utilizando servidor Apache.
Fonte: Humberto Sales Oliveira, visite o canal Clique Aqui !
Meu dia-a-dia tecnológico
Vale a pena conferir !
Transferindo dados via internet feito em Lazarus utilizando servidor Apache.
Fonte: Humberto Sales Oliveira, visite o canal Clique Aqui !
Neste vídeo vou apresentar o OnGuard, componente que gera chave de liberação de sistema, utilizando data de expiração. Você define uma data e gera uma chave criptografada e libera para o cliente.
Para quem precisa imprimir em impressoras térmicas de etiquetas que utilizam a linguagem PPLB (Zebra, Argox, Elgin, etc), segue algumas dicas.
Vamos ver o lay-out da impressão de uma linha com 3 colunas:
N
D20
S3
A810,160,2,1,1,1,N,”Torta de Frango”
A810,140,2,3,1,1,N,”000132″
A810,115,2,3,1,1,N,”R$ 3,90″
B570,020,0,2,3,5,65,N,”000132″
A540,160,2,1,1,1,N,”Sabonete Liquido”
A540,140,2,3,1,1,N,”001021″
A540,115,2,3,1,1,N,”R$ 2,20″
B310,020,0,2,3,5,65,N,”01021″
A260,160,2,1,1,1,N,”Adaptador de Tomada”
A260,140,2,3,1,1,N,”006352″
A260,115,2,3,1,1,N,”R$ 1,80″
B030,020,0,2,3,5,65,N,”006352″
P1
Vamos comentar para facilitar a interpretação:
N = Limpeza do Buffer
D20 = Densidade 20
S3 = Velocidade de impressão pol/segundos
Ap1,p2,p2,p3,p4,p5,p6,p7,”Dados” (veja tabela abaixo – Texto)
A810,160,2,1,1,1,N,”Torta de Frango”
A810,140,2,3,1,1,N,”000132″
A810,115,2,3,1,1,N,”R$ 3,90″
Bp1,p2,p2,p3,p4,p5,p6,p7,”Dados” (veja tabela abaixo – Barras)
B570,020,0,2,3,5,65,N,”000132″
P1 = determina a quantidade de cópias, 1 até 65.535
“Dados” – dados a serem impressos
Agora que você já entendeu, vamos ver como vai ficar em Lazarus ou Delphi:
procedure TFormEtqL42.BtnImprimeETQ;
var
F : TextFile;
i : integer;
begin
IF cPortaBARRAS = ” then
begin
ShowMessage(‘Verifique a configuração da porta da impressora de etiqueta’);
Exit;
end;
AssignFile(F,cPortaBARRAS);
Rewrite(F);
i := 0;
TabGlobal.DETQ001.Last;
TabGlobal.DETQ001.First;
while not TabGlobal.DETQ001.eof do
begin
Writeln(F,’N’);
Writeln(F,’D20′);
Writeln(F,’S3′);
// Etiqueta 1
Writeln(F,’A810,160,2,1,1,1,N,”‘+TabGlobal.DETQ001.DESCRICAO.Conteudo+'”‘);
Writeln(F,’A810,140,2,3,1,1,N,”‘+TabGlobal.DETQ001.CODPRO.Conteudo+'”‘);
Writeln(F,’A810,115,2,3,1,1,N,”‘+TabGlobal.DETQ001.VALOR.Conteudo+'”‘);
Writeln(F,’B570,020,0,2,3,5,65,N,”‘+TabGlobal.DETQ001.BARRAS.Conteudo+'”‘);
// Etiqueta 2
TabGlobal.DETQ001.Next;
Writeln(F,’A540,160,2,1,1,1,N,”‘+TabGlobal.DETQ001.DESCRICAO.Conteudo+'”‘);
Writeln(F,’A540,140,2,3,1,1,N,”‘+TabGlobal.DETQ001.CODPRO.Conteudo+'”‘);
Writeln(F,’A540,115,2,3,1,1,N,”‘+TabGlobal.DETQ001.VALOR.Conteudo+'”‘);
Writeln(F,’B310,020,0,2,3,5,65,N,”‘+TabGlobal.DETQ001.BARRAS.Conteudo+'”‘);
// Etiqueta 3
TabGlobal.DETQ001.Next;
Writeln(F,’A260,160,2,1,1,1,N,”‘+TabGlobal.DETQ001.DESCRICAO.Conteudo+'”‘);
Writeln(F,’A260,140,2,3,1,1,N,”‘+TabGlobal.DETQ001.CODPRO.Conteudo+'”‘);
Writeln(F,’A260,115,2,3,1,1,N,”‘+TabGlobal.DETQ001.VALOR.Conteudo+'”‘);
Writeln(F,’B030,020,0,2,3,5,65,N,”‘+TabGlobal.DETQ001.BARRAS.Conteudo+'”‘);
TabGlobal.DETQ001.Next;
Writeln(F,’P1′);
end;
CloseFile(F);
end;
Se gostou, compartilhe e ajude a divulgar meu trabalho. Obrigado!
* Créditos para parte do texto dos comandos para ArgoxBrasil
Recebi muitos e-mails de amigos inscritos no meu blog e no canal do youtube com perguntas:
Como saber o próximo número do auto-increment?
como recuperar último código de um auto-incremento ?
Como saber o próximo valor do auto incremento?
###### Clique no GOSTEI ! isso me ajuda muito ! #############
Neste vídeo vou mostrar como criar uma função para retornar o valor do campo auto incremento e como definir o valor do próximo incremento.
###### Função #####
Uses db; // Declare USES DB
//Private ou Public
function RetornaAutoINC(cTabela, cCampoAI: String; vAtribui:variant):Variant;
//Função:
function RetornaAutoINC(cTabela, cCampoAI: String; vAtribui:variant): Variant;
var
vResultaAutoIncrimento : Variant; // resultado do incremento
nQTD : Variant; // Variável para próximo incremento
begin
nQTD:=vAtribui; // atribuição a variavel nQTD o valor do próximo incremento obtido pelo parametro da funcao
TabGlobal.SqlAutoInc.Close; // fecha Query
TabGlobal.SqlAutoInc.sql.Clear; // limpa Query
TabGlobal.SqlAutoInc.SQL.Add(‘Select Max(‘+cCampoAI+’) as nCocInc from ‘+cTabela); // escreve nova query com parametros recebido da funcao
TabGlobal.SqlAutoInc.Open; // abre a nova query
case TabGlobal.SqlAutoInc.Fields[0].DataType of
ftSmallint, ftWord, ftInteger: // se o campo AI for SmallInt, Word ou Integer
vResultaAutoIncrimento := TabGlobal.SqlAutoInc.Fields[0].AsInteger + nQtd;
ftFloat, ftCurrency: // Se o campo for Float ou Currency
vResultaAutoIncrimento := TabGlobal.SqlAutoInc.Fields[0].AsFloat + nQtd;
end;
TabGlobal.SqlAutoInc.Close; // fecha query
Result := vResultaAutoIncrimento; // retornar o campo Resultado Auto INc
end;
###### Assista o vídeo #######
Nesta vídeo aula vou mostrar como criar arquivo INI. Criar o formulário de configuração do caminho da base de dados e do hostname.
Configurar a conexão para receber os parametros do INI.
Se gostou deste vídeo clique em Gostei isso ajuda a manter meu trabalho aqui com estes vídeos. MUITO OBRIGADO !
Código fonte do Projeto Inteiro: http://www.mediafire.com/download/z1brf9k8rzrkp5p/Vendas_07082016.rar
Assista o vídeo:
O formato de arquivo INI é um padrão informal para arquivos de configuração para algumas plataformas ou software. Arquivos INI são arquivos de texto simples com uma estrutura básica composta de “seções” e “propriedades”.
Link para download do projeto INI: http://www.mediafire.com/download/e3d8prclow42dzu/ExemploINI.rar
Assista o vídeo:
Nesta vídeo aula vamos trabalhar com funções para validação de CPF e CNPJ. Além disso também vamos trabalhar com funções de alinhamento de texto.
Apenas Numeros
http://www.mediafire.com/download/5lil24bbkl1tyx9/ApenasNumeros.txt
Alinhamento
http://www.mediafire.com/download/55edvh15ee774hw/Alinhamento.txt
CNPJ CPF
http://www.mediafire.com/download/q5kexov72oywsyn/Cpf_Cnpj.TXT
Assista o vídeo: