Página 1 de 1

Salto de página no formulário razão

Enviado: 08 Jul 2011 15:59
por Marcio_Carneiro
Olá, amigos
Estou imprimindo em formulário razão.
Antes de imprimir dou comando para configurar o tamanho 33 linhas
Ejeto a página
Depois de imprimir volto para tamanho 66.
O problema: ao ejetar a cabeça de impressão para no meio da página seguinte, e quando dou novamente comando
de impressão, ele avança para o início da mesma página, e quando chega lá, vai para a página seguinte.
Onde posso estar errando?;

O comando que estou dando é: chr(27)+"C"+Chr(33) <----- trinta e três linhas

Salto de página no formulário razão

Enviado: 09 Jul 2011 10:13
por Jairo Maia
Olá Marcio,

Por favor, esclareça as seguintes dúvidas para que possamos ajudar:
Marcio_Carneiro escreveu:Estou imprimindo em formulário razão.
Branco ou pré-impresso? Se for branco, o layout vc está montando, ai tem mais código envolvido, não só os de impressão.
Marcio_Carneiro escreveu:Depois de imprimir volto para tamanho 66.
Vc está fazendo isso após a impressão de cada formulário? Não deveria ser apenas quando encerrasse todas impressões?
Marcio_Carneiro escreveu:O comando que estou dando é: chr(27)+"C"+Chr(33) <----- trinta e três linhas
Para setar o tamanho da página, se impressora epson ou compatível está correto, este é o comando.

Quanto ao posicionamento do carro, vc pode fazer este controle, mas forneça estas informações primeiro para sabermos por onde começar.

Salto de página no formulário razão

Enviado: 09 Jul 2011 15:06
por rubens
Já verificou se a impressora não está configurada para efetuar o salto no picote...
Tem impressoras que estão com esta configuração ativa..
Tente também um setprc(0,0) no início da impressão


Rubens

Salto de página no formulário razão

Enviado: 21 Jul 2011 15:33
por Marcio_Carneiro
Obrigado pela atenção:
Respondendo as perguntas: o formulário é branco, sem marcação.
Ora utilizo prow(), ora informo a linha para imprimir.
Na minha lx 810 está dando certo, o erro ocorre principalmente na lx 300

A minha rotina de impressão:

Segue as rotinas (simplificadas) que utilizo:

Código: Selecionar todos

* imprimindo a lista

    If (modelo # 1)
      Tam_Folha(33)
      If (modelo = 0)
        CPI(12)
      EndIf
    EndIf

    Nome_Relat("Lista P/Entrega")

    If (modelo = 0)
      Do_Relat("Info_Relat",.F.)
    Else
      Do_Relat("Info_Relat", .F.)
    EndIf

    If (modelo # 1)
      Tam_Folha(66)
      If (modelo = 0)
        CPI(10)
      EndIf
    EndIf


Do Relat


 ///

* Imprime a linha superior do relat¢rio.

      linha = 1
      @linha, 0 Say linha1

* imprime o relat¢rio e finaliza

eject

* apos o eject ele para no meio da p gina do formul rio


e quando vou imprimir um outro relat¢rio ele avan‡a para o in¡cio da folha
e avan‡a para outra folha( o que est  dando erro)


  Tam_Folha(33)
  If (FalhaImpressora())
    Return
  EndIf

  Set Device To Print
*1
  @0, 1 Say SubStr(borda, 1, 1) + Replicate(SubStr(borda, 2, 1), 37) + ;
      SubStr(borda, 12, 1) + Replicate(SubStr(borda, 2, 1), 38) + ;
      SubStr(borda, 3, 1)





Procedure Tam_Folha
Parameters quantidade_

  If (comandos_ativados)
    Private ypos_ := PRow(), xpos_ := PCol(), dev := Set(_SET_DEVICE)

    ErrorBlock({|erro| ErroImpressora(erro)})

    Set Device To Print

    Begin Sequence

      If (quantidade_ = Nil)
        quantidade_ = 66
      EndIf

        @Prow(), Pcol() say chr(27)+"2"+chr(27)+"C"+chr(quantidade_)

    End Sequence

    Set(_SET_DEVICE, dev)
    SetPrc(ypos_, xpos_)
    RestauraErro()
  EndIf

Return


Procedure CPI
Parameters atual

  If (comandos_ativados)
    Private dev := Set(_SET_DEVICE), xpos_ := PCol(), ypos_ := PRow()

    ErrorBlock({|erro| ErroImpressora(erro)})
  
    Set Device To Print

    Begin Sequence

      If (PCount() = 0)
        @PRow(), PCol() Say Chr(27) + "M"
      ElseIf (atual = 12)
        @PRow(), PCol() Say Chr(27) + "M"
      Else
        @PRow(), PCol() Say Chr(27) + "P"
      EndIf

    End Sequence

    Set(_SET_DEVICE, dev)
    SetPrc(ypos_, xpos_)
    RestauraErro()

  EndIf

Return

Salto de página no formulário razão

Enviado: 22 Jul 2011 09:02
por Jairo Maia
Olá Marcio,

Como é formulário branco, nas linhas 54 a 56 do código vc está iniciando a montagem do layout. Provavelmente, vc o fecha na linha 33 do formulário, estou correto?

Seu código está um pouco confuso, nas linhas 33 e 34 do código, vc imprime na linha 1 do formulário, mas seu layout inicia na linha 54 do código. Entendo que seu problema é outro, é o problema do salto de página, mas adianto que se vc tiver fechando o layout na linha 33 do formulário, vc não pode usar o EJECT, já que a linha seguinte será a linha 0 do próximo formulário.

Leve em conta a dica do colega Rubens, e coloque antes do inicio da impressão, um SetPrc( 0, 0 ) também, e responda a minha pergunta acima, ela é importante para entendermos o que pode estar ocorrendo.

Salto de página no formulário razão

Enviado: 22 Jul 2011 13:59
por Marcio_Carneiro
Sim, finalizo na linha 33

Salto de página no formulário razão

Enviado: 22 Jul 2011 14:04
por Marcio_Carneiro
Respondendo a outra pergunta: este prg onde faço referência a linha 0 é de outro programa, digo, módulo. O primeiro é feito utilizando o relat. e o segundo imprimo diretamente.

Salto de página no formulário razão

Enviado: 22 Jul 2011 15:56
por SandroBelarmino
Marcio
Dê uma olhada no prg que eu anexei, eu costumava usar conforme o código abaixo e funcionava em qualquer epson.

Salto de página no formulário razão

Enviado: 23 Jul 2011 13:49
por Jairo Maia
Olá Sandro,
Vi os controles de impressora que vc passou. O problema me parece que isto está acontecendo pq ele está avançando para o próximo formulário, pelo menos é o que me parece.

Olá Márcio,
Marcio_Carneiro escreveu:Sim, finalizo na linha 33
Como vc está fazendo impressão em todo o formulário, coloque por segurança o SetPrc( 0, 0 ) antes de iniciar a impressão, e remova o EJECT e faça um teste. Veja o que acontece e reporte, ok?