[firebase-br] OFF IMPRESSORA TERMICA ZEBRA TLP 2844
MagnoS
magnoscosta em bol.com.br
Qui Maio 8 09:53:56 -03 2008
1º criar um Objeto.
zplCod: ==> Descrição
type
TZplCodBar = class( TObject )
public
zplCod: String;
display: String;
format: String;
end;
------------------------------------------------------------------------------------------------
Carregar lista dentro dum combo com os modelos para imprimir a etiqueta:
procedure CarregaListaEtiquetas( cbBox: TCustomComboBox; searchPath:
String );
var sr: TSearchRec;
basePath: String;
procedure AddEtiqueta( nomeEtiqueta: String );
var
tmpXML: TXMLDocument;
codbarNode: IXMLNode;
infoNode: IXMLNode;
tmpZplCodBar: TZplCodBar;
begin
tmpXML:= TXMLDocument.Create( Application );
try
tmpXML.DOMVendor:= GetDOMVendor( 'MSXML' );
tmpXML.FileName:= basePath + nomeEtiqueta;
tmpXML.Active:= True;
//xml valido
codbarNode:= tmpXML.ChildNodes.FindNode( 'CODBAR' );
if Assigned( codbarNode ) then
begin
infoNode:= codbarNode.ChildNodes.FindNode( 'INFO' );
//exite info..validar se preciso...
if Assigned( infoNode ) then
begin
tmpZplCodBar:= TZPLCodBar.Create();//
with tmpZplCodBar do
begin
zplCod:= codbarNode.ChildValues[ 'ZPLCOD' ];
display:= infoNode.ChildValues[ 'DISPLAY' ];
format:= infoNode.ChildValues[ 'FORMAT' ];
end;
cbBox.Items.AddObject( tmpZplCodBar.display, tmpZplCodBar );
end;
end;
finally
tmpXML.Free();
end;
end;
begin
basePath:= IncludeTrailingPathDelimiter( searchPath );
searchPath:= basePath + '*.zpl';
if FindFirst(searchPath, $00000020, sr) = 0 then
begin
repeat
AddEtiqueta( sr.Name );
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
-----------------------------------------------------------------------------------------------------------
Chama ela quando cria o form..
procedure TForm1.FormCreate(Sender: TObject);
begin
inherited;
CarregaListaEtiquetas( ComboEtiqueta, 'C:\PastaComOsModelos');
end;
---------------------------------------------------------------------------------------------------------------
a rotina pra imprimir:
procedure ImprimeCodBarras(
AModelo: String; AImpressora: String; AParamsValues: array of String;
AZPL: boolean = false
);
// Ex: AParamsValues = ['Nome', 'Joao', 'Codigo', '1234567890123']
var
lReturn: boolean;
lhPrinter: THandle;
lpcWritten: Cardinal;
MyDocInfo: DOCINFO;
sWrittenData: String;
S: TStringList;
I: Word;
begin
lhPrinter:= 0;
lReturn:= WinSpool.OpenPrinter( PChar(AImpressora), lhPrinter, nil );
if not lReturn or ( lhPrinter = 0 ) then
msgErro( 'Erro ao Abrir Impressora!' );
with MyDocInfo do
begin
pDocName := 'COD.BARRAS';
pOutputFile := '';
pDatatype := '';
end;
{return job}WinSpool.StartDocPrinter( lhPrinter, 1, @MyDocInfo );
StartPagePrinter( lhPrinter );
if (AZPL) or (FileExists( AModelo )) then
begin
if (AZPL) then
sWrittenData:= AModelo
else
begin
S:= TStringList.Create();
try
S.LoadFromFile( AModelo );
sWrittenData:= S.Text;
finally
S.Free();
end;
end;
i:= Low( AParamsValues );
while ( i < High( AParamsValues ) ) do
begin
sWrittenData:=
AnsiReplaceStr( sWrittenData, AParamsValues[i],
AParamsValues[i+1] );
Inc( i, 2 );
end;
end
else
begin
ShowMessage('Etiqueta nao existente.')
{return status}EndPagePrinter(lhPrinter);
{return status}EndDocPrinter(lhPrinter);
{return status}ClosePrinter(lhPrinter);
Exit;
end;
{return status}WritePrinter(lhPrinter, PChar(sWrittenData),
Length(sWrittenData)+1, lpcWritten);
{return status}EndPagePrinter(lhPrinter);
{return status}EndDocPrinter(lhPrinter);
{return status}ClosePrinter(lhPrinter);
end;
-----------------------------------------------------------------------------------------------------------------------
depois de escolhida a etiqueta no combo.
A Chamada para imprimir
procedure TForm1.ImprimirClick(Sender: TObject);
begin
with TZplCodBar( ComboEtiqueta.Items.Objects[ ComboEtiqueta.ItemIndex ] )
do
begin
if format = 'ETIQ1' then
begin
ImprimeCodBarras(
zplCod,
CBImpressora.Text, //Tem que informar qual impressora vai
impressora
[
'MERCL1', FormMercadorias.QRYMercCNOME.AsString,
//Nome na 1ª linha
'MERCL2', FormMercadorias.QRYMercCNOME2.AsString,
//Nome na 2ª linha
'CODBAR', FormMercadorias.QRYCdBrCCODIBAR.AsString,
//Código de Barras.
'DATA', FormatDateTime('DD/MM/YYYY', Now),
//Data
'PRECO', FormMercadorias.QRYMercPRECO.AsString),
//Preço
'COPIAS', spQtde.Text
//Qtd Cópias.
],
True
);
end;
end;
end;
------------------------------------------------------------------------------------------------
Dentro da pasta do executável ou em outra qualquer tem que ter o modelo de
etiqueta..
Crie um arquivo de texto com a extensão ZPL e dentro dele os seguinte
conteudo:
<CODBAR Version="1.0">
<INFO>
<DISPLAY>Etiqueta Produtos: 1 Cols -NOME- 70x35mm</DISPLAY>
<FORMAT>ETIQ1</FORMAT>
</INFO>
<ZPLCOD>OD
N
D5
S2
Q280,24
q540
A39,10,0,3,1,2,N,"CODMER"
A453,10,0,3,1,2,N,"NOUNME"
A39,85,0,1,1,3,N,"MERCL1"
A39,167,0,2,1,2,N,"FABRIC"
A39,205,0,2,1,2,N,"CODFAB"
B292,159,0,1,2,5,80,N,"CODBAR"
A364,244,0,1,1,1,N,"CODBAR"
PCOPIAS
</ZPLCOD>
</CODBAR>
Obs.: Para saber o que sao cada itens desse, é melhor pegar o manual de
programação da ZPL nele explica o que é cada um desses...
-------------------------------------------------------------------------------------------------------------------------------------
Pode ter geito mais fácil pra fazer... porém desta forma vc nao fica preso a
aplicação caso precise mudar alguma posição ou criar outra etiqueta....
é simplesmente alterar o arquivo de texto, ou adicionar mais arquivos.
Veja que no detalhe do arquivo, as palavras entre "" (aspas dulpas), são os
parâmetros que são enviados na rotina de imprimir, portando se vc fizer uma
lista com vários intens pode depois utilizá-los como quiser.
Qualquer coisa to ai.
----- Original Message -----
From: "Evandro Siqueira" <vansiqq em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, May 06, 2008 12:02 PM
Subject: Re: [firebase-br] OFF IMPRESSORA TERMICA ZEBRA TLP 2844
Eu tenho. Deixa eu procurar que mando pro seu e-mail, ok?
2008/5/5 Anderson <infosag em terra.com.br>:
> Desculpem o off,
>
> Alguem possue a programacao dessa impressora em delphi ?
>
> Abracos
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
--
Evandro Siqueira
Programador
Aracaju/SE
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
Internal Virus Database is out-of-date.
Checked by AVG.
Version: 7.5.524 / Virus Database: 269.23.3/1393 - Release Date: 23/04/2008
8:12
Mais detalhes sobre a lista de discussão lista