Aprenda a programar impressoras térmicas de etiquetas PPLB

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

A – Campo de texto
Ap1,p2,p3,p4,p5,p6,p7,”Dados”
p1 – posição eixo X em pontos
p2 – posição eixo Y em pontos
p3 – rotação (0=normal,1=90graus,2=180graus,3=270graus)
p4 – tipo de fonte (1 a 5) consultar manual das fontes disponíveis
p5 – multiplicador horizontal das fontes
p6 – multiplicador vertical das fontes
p7 – N=imagem normal, ou R= imagem em reverso
“Dados” – dados a serem impressos

B – Código de barras
Bp1,p2,p3,p4,p5,p6,p7,p8,”Dados”
p1 – posição eixo X em pontos
p2 – posição eixo Y em pontos
p3 – rotação (0=normal,1=90graus,2=180graus,3=270graus)
p4 – tipo de código de barra consultar manual das fontes disponíveis
p5 – largura da barra estreita
p6 – largura da barra larga
p7 – altura do código de barras em pontos
p8 – impressão da linha de interpretação (B= sim, N= não)

“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

Aprenda Programar: função para retornar o valor de um campo auto-incremento

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 #######

Curso de Programação: Criar INI para configuração do DB

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:

Lazarus: Aprenda validar CNPJ, CPF e alinhar strings

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: