GARANTIR DESCONTO

Fórum impressão de etiquetas #352236

22/01/2008

0

eu montei uma etiqueta com printer.canvas, só que eu preciso imprimir 10 etiquetas.
A impressão de uma etiqueta sai perfeita.
alguém tem uma dica ?


Jrsilveiro

Jrsilveiro

Responder

Posts

22/01/2008

Aroldo Zanela

Colega,

Trabalhar diretamente com Canvas não é missão impossível, porém, muito árdua. Tente os geradores de relatórios, como: QuickReport, FortesReport, Crystal, etc pois possuem roteiros específicos para trabalhar com etiquetas simplificando o trabalho do desenvolvedor. Outra opção seria o uso de impressoras de etiquetas da marca Zebra.
Com relação ao seu problema atual, caso queira avançar com o mesmo, por favor, adicione mais detalhes da sua dúvida.


Responder

Gostei + 0

22/01/2008

Edilcimar

eu imprimo normalmente etiquetas com printer.canvas, é extremamente fácial, informe quantas colunas você quer imprimir.


Responder

Gostei + 0

23/01/2008

Helio Nascimento

Caro amigo Edilcimar


Seria possível você nos ´brindar´ com uma fração do seu codigo para ter uma idéia como voce montou as etiquetas com o Canvas?
NOME | NOME NOME
ENDEREÇO | ENDEREÇO ENDEREÇO
BAIRRO | BAIRRO BAIRRO
CEP-CIDADE-UF | CEP-CIDADE-UF CEP-CIDADE-UF
----ESPAÇAMENTO
NOME NOME NOME
ENDEREÇO ENDEREÇO ENDEREÇO
BAIRRO BAIRRO BAIRRO
CEP-CIDADE-UF CEP-CIDADE-UF CEP-CIDADE-UF


Responder

Gostei + 0

23/01/2008

Edilcimar

IndiceV := Printer.PageHeight / 1584;
IndiceH := Printer.PageWidth / 960;
Cursor := crHourGlass;
Printer.BeginDoc;
Printer.Canvas.Font.Name := ´Arial´;
Printer.Canvas.Font.Size := 6;
Linha := 0;
Cont := 1;
With IBTable1 do
Begin
First;
While not eof do
Begin
Nome1 := FieldByName(´CLIENTE´).AsString;
Rua1 := Copy(FieldByName(´RUA´).AsString, 1,25);
Numero1 := FieldByName(´NUMERO´).AsString;
Apartamento1 := FieldByName(´APARTAMENTO´).AsString;
Cep1 := FieldByName(´CEP´).AsString;
Bairro1 := FieldByName(´BAIRRO´).AsString;
Cidade1 := FieldByName(´CIDADE´).AsString;
Estado1 := FieldByName(´ESTADO´).AsString;
Apartamento1 := Trim(Apartamento1);
Endereco1 := Trim(Rua1) + ´, ´ + Numero1;
If Length(Apartamento1) > 0 then
Endereco1 := Endereco1 + ´ Ap.´ + Apartamento1;
Next;
Nome2 := FieldByName(´CLIENTE´).AsString;
Rua2 := Copy(FieldByName(´RUA´).AsString, 1,25);
Numero2 := FieldByName(´NUMERO´).AsString;
Apartamento2 := FieldByName(´APARTAMENTO´).AsString;
Cep2 := FieldByName(´CEP´).AsString;
Bairro2 := FieldByName(´BAIRRO´).AsString;
Cidade2 := FieldByName(´CIDADE´).AsString;
Estado2 := FieldByName(´ESTADO´).AsString;
Apartamento2 := Trim(Apartamento2);
Endereco2 := Trim(Rua2) + ´, ´ + Numero2;
Printer.Canvas.TextOut(000, Linha, Nome1);
Coluna := Round(IndiceH * 350);
Printer.Canvas.TextOut(Coluna, Linha, Nome2);
Linha := Linha + Round(IndiceV * 21);
Printer.Canvas.TextOut(000, Linha, Endereco1);
Printer.Canvas.TextOut(Coluna, Linha, Endereco2);
Linha := Linha + Round(IndiceV * 21);
Printer.Canvas.TextOut(000, Linha, Cep1 + ´ - ´ + Bairro1);
Printer.Canvas.TextOut(Coluna, Linha, Cep2 + ´ - ´ + Bairro2);
Linha := Linha + Round(IndiceV * 21);
Printer.Canvas.TextOut(000, Linha, Cidade1 + ´ - ´ + Estado1);
Printer.Canvas.TextOut(Coluna, Linha, Cidade2 + ´ - ´ + Estado2);
Cont := Cont + 1;
If Cont = 5 then
Begin
Cont := 1;
Linha := Linha + Round(IndiceV * 103);
End
Else
Linha := Linha + Round(IndiceV * 102);
Next;
End;
End;
Printer.EndDoc;
Cursor := crDefault;

Isto foi feito para ser impresso com impressora matricial, e papel contínuo com etiqueta 98x232mm e 2 colunas, para outros tamanhos de etiqueta e outras quantidades de colunas os valores mudam, se utilizar uma impressora de boa resolução terá que fazer pequenos ajustes, mas a impressão sai mais precisa


Responder

Gostei + 0

24/01/2008

Helio Nascimento

Edilcimar

Primeiro agradeço pela sua gentileza.
Segundo questiono alguns trechos
ndiceV := Printer.PageHeight / 1584;
IndiceH := Printer.PageWidth / 960; 


Estes dois valores que você divide, como foi ´achado´?

Cont := Cont + 1;
If Cont = 5 then
Begin
Cont := 1;
Linha := Linha + Round(IndiceV * 103);
End
Else
Linha := Linha + Round(IndiceV * 102);


Qual o significado deste trecho? . E estes valores são conseguidos de onde?

Sds/Hélio


Responder

Gostei + 0

24/01/2008

Edilcimar

os indicevertical e indicehorizontal são tirados do tamanho do papel


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar