Fórum impressão de etiquetas #352236
22/01/2008
0
A impressão de uma etiqueta sai perfeita.
alguém tem uma dica ?
Jrsilveiro
Curtir tópico
+ 0Posts
22/01/2008
Aroldo Zanela
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.
Gostei + 0
22/01/2008
Edilcimar
Gostei + 0
23/01/2008
Helio Nascimento
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
Gostei + 0
23/01/2008
Edilcimar
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
Gostei + 0
24/01/2008
Helio Nascimento
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
Gostei + 0
24/01/2008
Edilcimar
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)