Tamanho de Página

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

Tamanho de Página

Mensagem por JuniorVaz »

Estou precisando saber se é possivel configurar o tamanho da pagina para impressão. Uso uma Epson LX-300+, no meu caso, a impressora tem como padrão a folha de formulário continuo, mas precisava que ela considerasse a metade da folha como uma folha inteira, pois uso um formulário continuo que é destacavel no meio da folha, no caso sempre que imprimu um romaneio nela, ela imprimi a meia folha e pula o resto até o inicio da proxima pagina inteira. è possivel fazer isto via DOS? Vlw ai galera.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Já Vaz ?

Entonces lá vaz...

@ PROW(),PCOL() SAY CHR(27)+CHR(43)+"33"
Isso para configurar para uma página de 33 linhas.
ou
@ PROW(),PCOL() SAY CHR(27)+CHR(43)+"44"
Isso para configurar para uma página de 44 linhas.
ou
@ PROW(),PCOL() SAY CHR(27)+CHR(43)+"20"
Isso para configurar para uma página de 20 linhas.

Para saber o número de linhas que uma página irá ter basta multiplicar o tamanho em polegadas pelo numero de linhas por polegada.

Um formulário continuo padrão por exemplo :

11 x 6 = 66 (para 1/6 lpp)

11 x 8 = 88 (para 1/8 lpp)

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)
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

ja foi

Mensagem por JuniorVaz »

Vlw ai dinovo marcelo... Agora ja foi... Num vaz... :P
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

Tentei mas não consegui

Mensagem por JuniorVaz »

Ola, tentei fazer o que o marcelo me passou mas não deu certo, vou posta o prg abaixo para ver se tem algu de errado.


PROCEDURE IMP_NFm
SELE NF
SEEK XNUMNF
XCODCLI = CODCLI
XNUMPED = NUMPED
XNUMCLI = NUMCLI
XCODCON = CODCON
XCODREP = CODREP
XTOTPRE = TOTPRE
XDATEMI = DATEMI
Xdesc1 = desc1
Xdesc2 = desc2
XTOT = TOT
SELE CLI
SEEK XCODCLI
XENDERECO = ENDERECO
XCIDADE = CIDADE
XCNPJ = CNPJ
XINSC = INSC
XUF = UF
xcep=cep
XRAZAO = RAZAO
XCOMPLE = COMPLE
XBAIRRO = BAIRRO
XNUM = NUM
SELE PED
SEEK XNUMPED
XLOCALPTGO = LOCPGTO
XLOCALENT = LOCENT
SELE CON
SEEK XCODCON
XP01=P01
XP02=P02
XP03=P03
XP04=P04
XP05=P05
XP06=P06
XP07=P07
SELE REP
SEEK XCODREP
XRA = NOME
li=00
@ PROW(),PCOL() SAY CHR(27)+CHR(43)+"33"
@ prow()+0,01 say chr(14)+"E.C.S. IND. E COM. DE CALCADOS LTDA"
@ prow()+1,08 SAY "DATA DE EMISSAO..: "
@ prow()+0,28 SAY XDATEMI
@ prow()+0,44 SAY "NUMERO DE ORDEM..: "+ALLTRIM(STR(XNUMNF,6))
@ PROW()+1,08 SAY REPLICATE("=",61)
@ PROW()+1,08 SAY "CLIENTE..: "+ALLTRIM(subs(XRAZAO,1,45))+"-"+ALLTRIM(STR(XCODCLI,6))
@ PROW()+1,08 SAY "ENDERECO.: "+alltrim(subs(XENDERECO,1,35))
@ prow()+0,54 SAY "No..: "+XNUM
@ prow()+1,08 SAY "CIDADE...: "+XCIDADE
@ prow()+0,43 say "UF..: "+xuf
@ prow()+0,54 say "CEP: "
@ prow()+0,59 SAY xcep PICT "@R 99.999-999"
@ prow()+1,08 say "BAIRRO...: "+xbairro
@ prow()+0,43 say "COMPLEMENTO: "+XCOMPLE
@ prow()+1,08 say "CNPJ.....: "
@ prow()+0,19 SAY XCNPJ PICT "@R 99.999.999/9999-99"
@ prow()+0,43 say "INSC.EST..: "+xinsc
@ prow()+1,08 SAY "REPRESENT: "+ALLTRIM(SUBS(XRA,1,63))
@ prow()+1,08 SAY "PEDIDO...: "+XNUMCLI
@ prow()+0,30 SAY "COND.PGTO: "
if xp01 <>0
@ prow()+0,40 SAY XP01
else
endif
if xp02 <>0
@ prow()+0,44 SAY XP02
else
endif
if xp03 <>0
@ prow()+0,48 SAY XP03
else
endif
if xp04<>0
@ prow()+0,52 SAY XP04
else
endif
if xp05<>0
@ prow()+0,56 SAY XP05
else
endif
if xp06 <>0
@ prow()+0,60 SAY XP06
else
endif
if xp07 <>0
@ prow()+0,64 SAY XP07
else
endif
@ prow()+1,08 SAY REPLICATE("=",61)
*....X....1....X....2....X....3....X....4....X....5....X....6
@ prow()+1,08 SAY "QUANT REFERENCIA DESCRICAO UNIT TOTAL"
*XXXXXXXXX XXXXXXXXXXXXXXXXXXXXX XXX.XX XXXXXXXXXXX
@ prow()+0,08 SAY REPLICATE("_",61)
stor 0 to xtotpre,xtotalpar
SELE nff
set index to num
//set filter to numnf=xnumnf
index on numnf to indtemp for numnf=xnumnf
//GO TOP
DO WHILE .not. eof()
xTOTPAR = TOTPAR
xTOTPag = TOTPAG
XPRECO = PRECO
XDESCREF = descREF
XCODREF = CODREF
xtotalpar=xtotalpar+xtotpar
xtotpre=xtotpre+xtotpag
@ prow()+1,08 SAY ALLTRIM(STR(xTOTPAR,10))
@ prow()+0,15 SAY ALLTRIM(SUBS(XCODREF,1,15))
@ prow()+0,30 SAY ALLTRIM(SUBS(XDESCREF,1,20))
@ prow()+0,50 SAY XPRECO pict "@E 999.99"
@ prow()+0,62 SAY xTOTPag pict "@E 99,999.99"
SKIP
enddo
@ prow()+1,32 SAY "T O T A L B R U T O....:"
@ prow()+0,32 SAY "T O T A L B R U T O....:"
@ prow()+0,59 SAY XTOTPRE PICT "@E 999,999.99"
@ prow()+0,59 SAY XTOTPRE PICT "@E 999,999.99"

SELE NF
SEEK XNUMNF
STOR 0.00 TO XDEsc1,XDEsc2,XD,XDE
stor 0 to totali,totali1
XXX=XTOTPRE

// IF !EMPTY(DESC1) .OR. DESC1<>0
XDESC1=DESC1
XDEs1=XXx*(XDESC1/100)
totali=XXX-(XDES1)

//ENDIf

// IF !EMPTY(DESC2) .OR. DESC2<>0
XDESC2=DESC2
XDes2=totali*(XDESC2/100)
totali1=totali-(XDES2)

// ENDIF
XDEsc=XDEsc1+XDEsc2
IF XDEsc1<>0
@ prow()+1,32 SAY "(-)DESC.ESPECIAL % :"
@ prow()+0,49 SAY XDESC1
@ prow()+0,59 SAY xdes1 PICT "@E 999,999.99"

ELSE
ENDIF
IF XDesc2<>0
@ prow()+1,32 SAY "(-)DESC. A VISTA % :"
@ prow()+0,49 SAY XDESC2
@ prow()+0,59 SAY xdes2 PICT "999,999.99"
ENDIF













@ prow()+1,08 SAY REPLICATE("=",61)
@ prow()+1,08 say "TOTAL PARES: "+alltrim(str(xtotalpar,6))
@ prow()+0,32 SAY "T O T A L L I Q U I D O:"
@ prow()+0,59 SAY totali1 PICT "@E 999,999.99"
@ prow()+1,08 SAY REPLICATE("=",61)

*....X....1....X....2....X....3....X....4....X....5....X....6
@ prow()+1,08 SAY "VENCIMENTO VALOR VENCIMENTO VALOR"
SELE FIC
SEEK XNUMNF
SET FILTER TO NUMNF=XNUMNF
DO WHILE .T.
XVALOR = VALOR
XDATVEN = DATVEN
@ prow()+1,08 SAY XDATVEN
@ prow()+0,20 SAY XVALOR pict "@E 999,999.99"
SELE FIC
SKIP
IF NUMNF<>XNUMNF .OR. EOF()
@ prow()+1,08 SAY REPLICATE("=",61)
EXIT
ENDIF
XVALOR = VALOR
XDATVEN = DATVEN
@ prow()+1,47 SAY XDATVEN
@ prow()+0,59 SAY XVALOR pict "@E 999,999.99"
SELE FIC
SKIP
IF NUMNF<>XNUMNF .OR. EOF()
@ prow()+1,08 SAY REPLICATE("=",61)
xtotpar:=0
xtotpre:=0
EXIT
ENDIF
set print to
ENDDO

RETU
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Esquece o que o Marcelo postou ele é muito burro !

O certo é :

CHR(27)+CHR(67)+"nn"

Onde nn é o número de linhas do formulário.

:D
Acontece nas melhores fámilias...

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)
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

Certeza???

Mensagem por JuniorVaz »

O marcelo, eu colokei o seguinte:

@ PROW()+0,00 SAY CHR(27)+CHR(67)+"30"

max ao inves de a pagina ficar com 30 linhas, ele imprimi o numero 30 na primeira linha. Será que naum falta nd naum????
evaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 27 Out 2005 23:29

Mensagem por evaldo »

Vou entrar nessa briga..............
Depois que vc colocar os SET para imprimir, vc colocar a funcao RESET_IMPR( e o numero de linhas quer vc quer imprimir)


****************************
FUNCTION RESET_IMPR(nLPP)
*************************
//
IF nLPP == NIL
nLPP := 66
END
//
?? PRN({"RT" ,; // RESETAR IMPRESSORA
"QC_D",; // DESLIGAR QUALIDADE CARTA
"CS_D",; // DESLIGAR CONDENSADO SIMPLES
"NG_D",; // DESLIGAR NEGRITO
"EN_D" }) // DESLIGAR ENFATIFADO
?? PRN("TL",nLPP) // QTDE DE LINHAS POR PAGINA
//
RETURN NIL
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

Erro

Mensagem por JuniorVaz »

Fiz o que o colega me passaou, mas na hora de compilar aparece a seguinte msg:

'prn' unresolved external
inseri as linhas extamente como o colega me passou. Será que tem outro coisa para inserir? VLW ai.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem por ANDRIL »

OLa JuniorVaz,

Tente o seguinte:

set printer to LPT1
set device to print
set print on
set cons off
? CHR(27)+CHR(67)+CHR(33)
SETPRC(0,0)

(onde chr(33) é o numero de linhas da pagina)


Abraços,
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
evaldo
Usuário Nível 3
Usuário Nível 3
Mensagens: 113
Registrado em: 27 Out 2005 23:29

Mensagem por evaldo »

Junior estou enviando a Funcao PRN(), mas vai faltar um arquivo PRINTER.DBF (me manda o seu e-mail que envio para você), nele esta todos os comando de varias impressora, dessa forma um relatorio pode ser imprimido em varias impressora basta para isso, só selecionar a impressora.

Código: Selecionar todos

FUNCTION PRN(Arg1, Arg2)
*************************
   //
   LOCAL s, nPos, lFecha:=.f., nArea:= SELECT(), aAux:={}, i, cRet:=""
   //
   WHILE SELECT("Impressora") == 0
      IF !AbreDbfNtx({"Impressora"})
         RETURN ""
      END
      lFecha:=.t.
   END
   //
   SELECT Impressora
   SET ORDER TO 1
   SEEK cTipImp
   //
   IF VALTYPE(Arg1) = "C" // Caracter
      AADD(aAux, Arg1)
   ELSEIF VALTYPE(Arg1) = "A" // Arranjo
      aAux := Arg1
   END
   //
   Arg1 := ""
   //
   FOR i:=1 TO LEN(aAux)
      //
      IF Impressora->(FIELDPOS( aAux[i] )) <> 0
         Arg1 := Impressora->(FIELDGET( Impressora->(FIELDPOS( aAux[i] ))))
      ELSE
         Mensagem("Comando de ImpressÆo "+ aAux[i] +" Inv lido !!! ",3,3)
         IF(lFecha,Fechadbfntx({"Impressora"}),.f.)
         SELECT (nArea)
         RETURN ""
      END
      //
      s:= strtran(Arg1, " ", "")
      //
      IF !Empty(s)
         IF (PCount() == 2) // se passou dois parametros
            IF At("$n", s) != 0
               s:= strtran(s, "$n", ["] + LTrim(Str(Arg2)) + ["])
            END
            IF At("#n", s) != 0
               s:= strtran(s, "#n", "CHR(" + LTrim(Str(Arg2)), 1, 1)
            END
         END
         s:= strtran(s, "#" , "CHR(" )
         s:= strtran(s, ";" , ")+"   )
         s:= strtran(s, [")], ["]    )
         IF SubStr(s,Len(s),1) $ "0123456789"; s:= s + ")"; END
         cRet += &s.
      END
      //
   END
   //
   IF(lFecha,Fechadbfntx({"Impressora"}),.f.)
   SELECT (nArea)
   //
RETURN cRet
[/b]
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

Email

Mensagem por JuniorVaz »

Certo evaldo, pode mandar pro meu email então: juniorvaz@superig.com.br vlw ai
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

dICAS

Mensagem por JuniorVaz »

Oi, tentei a dica do andril e funcionou, a que o evaldo me passaou ainda não testei. Mas esta do andril, se alguem tiver o mesmo problema pode usar ela que funciona na boa. VLW ai a todos que deram mais essa força ai. :)
Avatar do usuário
ERASMO ANDRIOLI
Usuário Nível 2
Usuário Nível 2
Mensagens: 51
Registrado em: 15 Jul 2004 16:15
Localização: Sorriso-MT
Contato:

COISA FÁCIL

Mensagem por ERASMO ANDRIOLI »

Colega....

Use um contador....

esse contador pode ser uma variavel de arquivo.... exemplo:

varlin = 60 // quantidade de linhas por folha...

cada vez que seu prog passar pela var devera somar + 1...

quando completar 60, é só mandar sair do loop....

o negócio é fora de sério.... sempre uso assim... nunca deu qualquer tipo de problema... é facil de usar e qualquer um sai numa boa...

SAudações...
JuniorVaz
Usuário Nível 3
Usuário Nível 3
Mensagens: 100
Registrado em: 16 Jul 2004 15:49

Colega.

Mensagem por JuniorVaz »

Sim, mas neste caso como a impressora é configurada para 60 linhas, se o relatório tiver apenas 33 ele pula o restante, o meu problema é justamente a configuração do tamanho do papel.Mas obrigado pela dica. :)
Responder