Tamanho de Página
Moderador: Moderadores
Tamanho de Página
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.
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
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)
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)
Tentei mas não consegui
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
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
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.
Acontece nas melhores fámilias...
Até logo.
Marcelo
O certo é :
CHR(27)+CHR(67)+"nn"
Onde nn é o número de linhas do formulário.
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)
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)
Certeza???
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????
@ 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????
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
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
Erro
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.
'prn' unresolved external
inseri as linhas extamente como o colega me passou. Será que tem outro coisa para inserir? VLW ai.
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.
[/b]
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 cRetdICAS
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. 
- ERASMO ANDRIOLI
- Usuário Nível 2

- Mensagens: 51
- Registrado em: 15 Jul 2004 16:15
- Localização: Sorriso-MT
- Contato:
COISA FÁCIL
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...
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...
Colega.
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. 


