ETIQUETAS

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

ETIQUETAS

Mensagem por ederxc »

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é+++
C:\Xharbour\Xdev\Fw\VSX
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Nossa que mancada minha ... é 4 colunas com 8 etiquetas cada coluna
alem de pedir ajuda ainda pede errado !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

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.
"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}
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

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:

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()
Aqui imprime o conteudo do Array:

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
Função em questão:

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
Exemplo do conteudo de meu arquivo de layouts de etiquetas LABELS.DBF abra o com Excel e exporte para dBase III Plus:

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
Trabalhe em cima disto e construa a sua rotina.
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.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Valeu rocinha ! Vou ver o que posso fazer ja que tenho um ponto de partida !
C:\Xharbour\Xdev\Fw\VSX
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Pessoal vcs ñ teriam uma rotina mais simples , só de olhar essa ae do rocinha ja comecei a passar mau !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

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.
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.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

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.

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
Até logo.

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)
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

valeu marcelo , brigadão !
C:\Xharbour\Xdev\Fw\VSX
Responder