ETIQUETAS
Moderador: Moderadores
ETIQUETAS
fala galera !
preciso fazer um prog de impressão de etiquetas mas ñ tenho nem idéia de como montar isso alguem poderia me dar um help
Fomulario com 4 etiquetas por linha e 8 por coluna sendo um total de 32 etiquetas por pagina !
té+++
preciso fazer um prog de impressão de etiquetas mas ñ tenho nem idéia de como montar isso alguem poderia me dar um help
Fomulario com 4 etiquetas por linha e 8 por coluna sendo um total de 32 etiquetas por pagina !
té+++
C:\Xharbour\Xdev\Fw\VSX
Monte um array bidimensional.
Imagine cada etiqueta (em linha) como uma dimensão e as linhas que compõem a etiqueta como outra.
Carregue os dados de das etiquetas de uma linha.
Quando vc preencher todas as "colunas" de etiqueta, imprime, limpa a "linha" de etiquetas e carrega novamente.
Lembre de verificar se existe dados para imprimir ao final do processo.
Pode ser que fique sem "completar" as colunas. Verifique e faça a impressão se necessário.
Imagine cada etiqueta (em linha) como uma dimensão e as linhas que compõem a etiqueta como outra.
Carregue os dados de das etiquetas de uma linha.
Quando vc preencher todas as "colunas" de etiqueta, imprime, limpa a "linha" de etiquetas e carrega novamente.
Lembre de verificar se existe dados para imprimir ao final do processo.
Pode ser que fique sem "completar" as colunas. Verifique e faça a impressão se necessário.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Veja estes framentos:
As variaveis lbAlguamCoisa devem conter as suas especificações da etiqueta que voce esta usando no momento. No final do post coloquei o resultado de uma exportação de meu arquivo LABELS.DBF.
Aqui faz o preenchimento do Array de etiquetas:
Aqui imprime o conteudo do Array:
Função em questão:
Exemplo do conteudo de meu arquivo de layouts de etiquetas LABELS.DBF abra o com Excel e exporte para dBase III Plus:
Trabalhe em cima disto e construa a sua rotina.
Veja estes framentos:
As variaveis lbAlguamCoisa devem conter as suas especificações da etiqueta que voce esta usando no momento. No final do post coloquei o resultado de uma exportação de meu arquivo LABELS.DBF.
Aqui faz o preenchimento do Array de etiquetas:
Código: Selecionar todos
USE clientes
dbGoTop()
Alabel := {}
DO WHILE .not. eof()
TArray := {}
aadd( TArray, iif( eof(), '', NOME ) )
aadd( TArray, iif( eof(), '', ENDERECO ) )
aadd( TArray, iif( eof(), '', BAIRRO+' - '+ESTADO ) )
aadd( TArray, iif( eof(), '', CEP ) )
aadd( Alabel, TArray )
SKIP
IF recco() = 1
GO BOTTOM
ENDIF
ENDDO
dbGoTop()
Código: Selecionar todos
FOR TX = 1 to len( Alabel )
PrintLabel( Alabel, M->lbLARGURA, M->lbLINHAS, M->lbENTRE, M->lbESPACOS, M->lbMARGEM )
M->lb_REPETIR = M->lb_REPETIR - 1
IF M->lb_FOLHAS <> 0
M->lb_FOLHAS = M->lb_FOLHAS - 1
IF M->lb_FOLHAS <= 1
//EJECT
SET DEVICE TO SCREEN
SET CONSOLE ON
@ 24,0 say "Nova folha esta pronta ? Tecle ENTER")
inkey()
@ 24,0 say space(80)
SET CONSOLE OFF
SET DEVICE TO PRINT
M->lb_FOLHAS = INT(DIV(M->lbFOLHAS ,M->lbCARREIRA))
SETPRC(0,0)
@ PROW()+M->lbTOPO, PCOL() SAY CondOn
ENDIF
ENDIF
IF M->lb_REPETIR <= 1
EXIT
ENDIF
NEXT
Código: Selecionar todos
FUNCTION PRINTLABEL( PALABEL, PCOLUNAS, PLINHAS, PABAIXO, PENTRE, PMARGEM )
LOCAL TX, TY
SETPRC(0,0)
FOR TX:=1 TO PLINHAS // Linhas dentro da etiqueta
FOR TY:=1 TO LEN(PALABEL) // colunas dentro da etiqueta
@ PROW(),(((PCOLUNAS+PENTRE)*(TY-1))+(TY-1))+PMARGEM SAY SUBSTR(PALABEL[TY][TX],1,PCOLUNAS-PENTRE)
NEXT
DEVPOS(PROW()+1,0)
NEXT
DEVPOS(IIF(PLINHAS=NIL,LEN(PALABEL),PLINHAS+PABAIXO),0)
RETURN NIL
Código: Selecionar todos
NOMBRE,HOJA,MARGENSUP,MARGENIZD,ALTOETIQ,ANCHOETIQ,SEPARAHORZ,SEPARAVERT,COLUMNAS,FILAS,ULTIMA,PRNULTFILA
APLI 1263,A4,13.00,8.00,33.80,64.60,0.00,0.00,3,8,CODCLI,T
APLI 1264,A4,0.00,0.00,148.00,210.00,0.00,0.00,1,2,,T
APLI 1270,A4,10.00,0.00,25.40,70.00,0.00,0.00,3,11,,T
APLI 1271,A4,14.00,0.00,30.00,70.00,0.00,0.00,3,9,,T
APLI 1272,A4,9.00,0.00,35.00,70.00,0.00,0.00,3,8,,T
APLI 1273,A4,0.00,0.00,37.00,70.00,0.00,0.00,3,8,,T
APLI 1274,A4,0.00,0.00,37.00,105.00,0.00,0.00,2,8,,T
APLI 1275,A4,9.00,0.00,40.00,105.00,0.00,0.00,2,7,,T
APLI 1276,A4,0.00,0.00,42.40,70.00,0.00,0.00,3,7,,T
APLI 1277,A4,0.00,0.00,42.40,105.00,0.00,0.00,2,7,,T
APLI 1278,A4,6.00,0.00,57.00,105.00,0.00,0.00,2,5,,T
APLI 1279,A4,0.00,0.00,74.00,105.00,0.00,0.00,2,4,,T
APLI 1280,A4,0.00,0.00,148.00,105.00,0.00,0.00,2,2,,T
APLI 1281,A4,0.00,0.00,297.00,210.00,0.00,0.00,1,1,,T
APLI 1282,A4,5.00,8.00,16.90,48.50,0.00,0.00,4,17,,T
APLI 1283,A4,7.00,7.00,21.20,38.00,0.00,0.00,5,13,ESTOQUE,T
APLI 1284,A4,0.00,0.00,21.20,52.50,0.00,0.00,4,13,,T
APLI 1285,A4,9.00,8.00,25.40,48.50,0.00,0.00,4,11,,T
APLI 1286,A4,0.00,0.00,29.70,52.50,0.00,0.00,4,10,,T
APLI 1287,A4,9.00,0.00,35.00,105.00,0.00,0.00,2,8,,T
APLI 1288,A4,22.00,8.00,42.40,97.00,0.00,0.00,2,6,,T
APLI 1289,A4,9.00,0.00,48.00,48.00,0.00,0.00,2,6,,T
APLI 1290,A4,12.00,0.00,67.70,70.00,0.00,0.00,3,4,,T
APLI 1291,A4,13.00,9.00,67.70,97.00,0.00,0.00,2,4,,T
APLI 1292,A4,6.00,0.00,70.00,105.00,0.00,0.00,2,4,,T
APLI 1293,A4,13.30,0.00,33.80,70.00,0.00,0.00,3,8,,T
APLI 1294,A4,14.00,0.00,16.90,70.00,0.00,0.00,3,16,,T
APLI 1295,A4,21.50,0.00,50.80,70.00,0.00,0.00,3,5,,T
APLI 1298,A4,4.50,0.00,36.00,70.00,0.00,0.00,3,8,,T
APLI 2419,A4,15.00,5.00,38.10,99.10,3.00,0.00,2,7,,T
APLI 4270,A4,0.00,0.00,40.00,70.00,0.00,0.00,3,7,,T
AVERY L7160,A4,15.90,7.20,38.10,63.50,2.50,0.00,3,7,,F
AVERY L7161,A4,9.50,7.20,46.60,63.50,2.50,0.00,3,6,,T
AVERY L7162,A4,13.70,4.70,33.90,99.00,2.60,0.00,2,8,,F
AVERY L7163,A4,15.90,4.70,38.10,99.00,2.60,0.00,2,7,,F
AVERY L7164,A4,4.70,7.20,72.00,63.50,2.50,0.00,3,4,,F
AVERY L7165,A4,13.30,4.70,67.70,99.00,2.60,0.00,2,4,,F
AVERY L7166,A4,9.50,4.70,93.10,99.00,2.60,0.00,2,3,,F
AVERY L7167,A4,4.70,5.20,286.40,199.60,0.00,0.00,1,1,,F
AVERY L7168,A4,5.70,4.70,143.50,199.60,0.00,0.00,1,2,,F
AVERY L7551,A4,11.40,4.70,21.20,38.10,2.50,0.00,5,13,,F
AVERY L7562,A4,13.70,4.70,33.90,99.00,2.60,0.00,2,8,,F
AVERY L7563,A4,15.90,4.70,38.10,99.00,2.60,0.00,2,7,,F
AVERY L7565,A4,13.30,4.70,67.70,99.00,2.60,0.00,2,4,,F
AVERY L7651,A4,11.40,4.70,21.20,38.10,2.50,0.00,5,13,,F
AVERY L7654-F,A4,9.50,27.50,46.60,76.20,2.50,0.00,2,6,,F
AVERY L7654-S,A4,13.30,32.60,16.90,144.80,0.00,0.00,1,16,,F
AVERY L7655,A4,23.20,14.70,42.00,89.00,2.40,0.00,2,6,,F
AVERY L7656,A4,16.70,5.60,11.10,46.00,4.80,1.60,4,21,,F
AVERY L7664,A4,5.20,17.80,72.00,70.00,34.10,0.00,2,4,,F
AVERY L7701,A4,25.40,9.00,62.00,192.00,0.00,0.00,1,4,,F
AVERY L7702,A4,12.70,9.00,39.00,192.00,0.00,0.00,1,7,,F
SINEL,A4,8.50,0.00,25.40,52.50,0.00,0.00,4,11,,F
TARJETA CLIENTES,A4,25.00,20.00,21.00,40.00,33.00,35.00,2,10,,T
TESTE,A4,2.00,2.00,5.00,2.00,3.00,1.00,3,14,CLIENTES,F
CLIENTES,A4,1.00,1.00,50.00,120.00,0.00,0.00,2,10,CLIENTES,F
COMPOSICAO,A4,0.00,13.00,44.50,25.40,0.00,0.00,8,6,,F
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Tipo de two-line, hehehe!(Antigos programas em basic feitos em duas linhas)
A primeira vez que vi este codigo em um livro de Clipper com várias funções também não dei importancia, mesmo porque usava uma LIB que funcionava show com o Exospace mas foi mudar para Blinker e ter problemas.
E como eu sou do tipo, "se tiver a receita, não compre o bolo pronto." passei a usa-la.
Onde voce encontra a dificuldade de implementar estas rotinas?.
Olha mais apuradamente nos blocos.
- Basta ver que o primeiro bloco preenche um vetor multimensional com os campos que voce quer.
- O segundo bloco usa a função do terceiro bloco para imprimir o conteudo deste array.
- O terceiro bloc contem a função reutilizavel onde voce passa parametros como quantidades de linhas, colunas e etc.
- O ultimo bloco é só uma representação dos tamanhos das etiquetas padrão para voce ter idéia das dimensões e criar a tabela co melas é critério seu.
Mas se voce quizer eu tenho outra rotina mais simples com umas 600 linhas e esta eu não quis colocar aqui pra não assustar. Nela voce faz o mesmo com inconveniente de em alguns casos ter de duplicar o codigo para outros tipos de etiquetas.
A primeira vez que vi este codigo em um livro de Clipper com várias funções também não dei importancia, mesmo porque usava uma LIB que funcionava show com o Exospace mas foi mudar para Blinker e ter problemas.
E como eu sou do tipo, "se tiver a receita, não compre o bolo pronto." passei a usa-la.
Onde voce encontra a dificuldade de implementar estas rotinas?.
Olha mais apuradamente nos blocos.
- Basta ver que o primeiro bloco preenche um vetor multimensional com os campos que voce quer.
- O segundo bloco usa a função do terceiro bloco para imprimir o conteudo deste array.
- O terceiro bloc contem a função reutilizavel onde voce passa parametros como quantidades de linhas, colunas e etc.
- O ultimo bloco é só uma representação dos tamanhos das etiquetas padrão para voce ter idéia das dimensões e criar a tabela co melas é critério seu.
Mas se voce quizer eu tenho outra rotina mais simples com umas 600 linhas e esta eu não quis colocar aqui pra não assustar. Nela voce faz o mesmo com inconveniente de em alguns casos ter de duplicar o codigo para outros tipos de etiquetas.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Veja este exemplo, ele é mais simples mas funciona perfeitamente, no caso está para 2 colunas mas a idéia é a mesma e funciona para quantas colunas quiser.
Até logo.
Marcelo
Código: Selecionar todos
SAIDA=SPACE(1)
CONTA=0
SETCOLOR("GR+/B,W+/N,,,W+/B")
@ 01,00 CLEAR TO 11,79
SETCOLOR("W+/B,GR+/N,,,W+/B")
@ 02,02 SAY "[N]ormal [C]omprimido ->"
@ 01,00 TO 11,79
USE SELECAO
INDEX ON NOME TO TEMP
SET PRINTER TO LPT1
SET DEVI TO PRINT
SETPRC(0,0)
LN=0
WTIP="N"
WCOL=0
IF WTIP="C"
@ PROW(),PCOL() SAY CHR(27)+CHR(15)
ELSE
@ PROW(),PCOL() SAY CHR(27)+"M"
ENDIF
DO WHIL .NOT. EOF()
** aqui pega os dados da primeira coluna de etiquetas
NOME1=NOME; ENDE1=ENDE; BAIRRO1=BAIRRO; CEP1=CEP; CIDADE1=CIDADE
ESTADO1=ESTADO
** aqui pega os dados da segunda coluna de etiquetas
SKIP
NOME2=NOME; ENDE2=ENDE; BAIRRO2=BAIRRO; CEP2=CEP; CIDADE2=CIDADE
ESTADO2=ESTADO
@ LN,00+WCOL SAY CHR(27)+"E"+NOME1+CHR(27)+"F" // 1ª coluna
@ LN,42+WCOL SAY CHR(27)+"E"+NOME2+CHR(27)+"F" // 2ª coluna
LN++
@ LN,00+WCOL SAY ENDE1 // 1ª coluna
@ LN,42+WCOL SAY ENDE2 // 2ª coluna
LN++
@ LN,00+WCOL SAY BAIRRO1+" CEP : "+CEP1 // 1ª coluna
@ LN,42+WCOL SAY BAIRRO2+" CEP : "+CEP2 // 2ª coluna
LN++
@ LN,00+WCOL SAY TRIM(CIDADE1)+" - "+ESTADO1 // 1ª coluna
@ LN,42+WCOL SAY TRIM(CIDADE2)+" - "+ESTADO2 // 2ª coluna
SKIP
LN++
LN++
LN++
ENDDO
@ PROW(),PCOL() SAY CHR(10)
@ PROW(),PCOL() SAY CHR(10)
@ PROW(),PCOL() SAY CHR(27)+"F"
@ PROW(),PCOL() SAY CHR(27)+CHR(18)
@ PROW(),PCOL() SAY CHR(27)+"P"
SETPRC(0,0)
SET DEVI TO SCREE
SET PRINTER TO
RETURN
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)

