Olá, Jairo.
Fiz as alterações, mas sempre esta gerando somente uma folha e sem observar a questão do salto de página.
Baixei mais cedo o exemplo do Toledo, o executável funciona. mas se pego o fonte dele e coloco no meu PRG, o relatório é gerado da mesma forma de antes, somente uma página sem observar os espaços no final da página conforme consta no TXT, vou re-conferir novamente o exemplo dele no meu prg.
Até pensei que pudesse ser alguma coisa com a função () que é chamada duas vezes no fonte, comentei as linhas e mandei gerar somente para ver o que iria aparecer, e novamente foi gerado apenas uma página na impressora.
Estranho que se retiro as instruções para imprimir na USB e compilo com o Blinker e mando na FX1050 imprime todas as páginas.
Vou postar o fonte completo, depois de feitas as alterações mencionadas no seu post anterior.
SET PRINTER TO EXTRATO_PROVISORIO.TXT
SET DEVICE TO PRINT
cARQ := "EXTRATO_PROVISORIO.TXT"
Imprime ( cARQ )
...
....
.....
@ pRow() + 1, 0 SAY ""
SET DEVICE TO SCREEN
SET PRINTER TO
CLOSE ALL
Imprime ( cARQ ) // envia para impressão
...
....
.....
While HB_FReadLine( nHandler, @cLinha ) = 0
If "CONTA CORRENTE" $ Upper( cLinha ) .Or. "***" $ cLinha
Código: Selecionar todos
*EMITIR EXTRATO PROVISORIO
#define WIN_DMPAPER_A4 9
CLEAR
mlinha = 69
mconta = SPACE(5)
msal_ini = 0.00
mdat_ini = CTOD(' / / ')
mdata = CTOD(' / / ')
mdat_sal = CTOD(' / / ')
mpag = 1
USE CLIENTES INDEX ICLIENTE
SELECT 2
USE MOVIM INDEX IMOVIM
SELECT 3
USE HISTOR INDEX IHISTOR
DO WHILE .T.
mconta = SPACE(5)
CLEAR
@3,10 SAY 'C O N T A C O R R E N T E'
@4,10 SAY 'EXTRATO PROVISORIO'
@08,08 TO 15,47 DOUBLE
@10,10 SAY 'INFORME CONTA'
@18,10 SAY '99999 PARA ENCERRAR'
@10,34 GET mconta
READ
IF mconta = '99999'
CLOSE ALL
CLEAR
RETURN
ENDIF
SELECT 1
SEEK mconta
IF EOF()
@22,1 SAY 'CONTA NAO CADASTRADA'
WAIT ', ENTER'
LOOP
ELSE
EXIT
ENDIF
ENDDO
SELECT 2
SEEK mconta
IF EOF()
@22,1 SAY 'CONTA SEM MOVIMENTO'
WAIT ', ENTER PARA CONTINUAR'
ELSE
@12,10 SAY 'INFORME DATA DE INICIO'
@12,34 GET mdata
READ
ENDIF
SET PRINTER TO EXTRATO_PROVISORIO.TXT
SET DEVICE TO PRINT
cARQ := "EXTRATO_PROVISORIO.TXT"
Imprime ( cARQ )
SELECT 1
CLEAR
CAB()
msal_ini = SAL_INI
mdat_sal = DAT_INI
SELECT 2
DO WHILE mconta = CONTA .AND. DATA < mdata .AND. .NOT. EOF()
IF CT < 10
msal_ini = msal_ini - VALOR
ELSE
msal_ini = msal_ini + VALOR
ENDIF
mdat_sal = DATA
SKIP
ENDDO
SET CENTURY ON
@6,1 SAY mdat_sal
@6,13 SAY 'SALDO ANT.'
IF msal_ini < 0.00
@6,39 SAY -msal_ini PICTURE '9,999,999,999.99D'
ELSE
@6,39 SAY msal_ini PICTURE '9,999,999,999.99C'
ENDIF
SELECT 2
DO WHILE mconta = CONTA .AND. .NOT. EOF()
@mlinha,1 SAY DATA
mdat_sal = DATA
mct = CT
SELECT 3
SEEK mct
IF EOF()
@22,1 SAY 'CODIGO DE TRANSACAO INEXISTENTE,'
@22,32 SAY mct PICTURE '99'
WAIT ', ENTER PARA ENCERRAR'
CLOSE ALL
RETURN
ENDIF
@mlinha,13 SAY HISTORICO
SELECT 2
@mlinha,25 SAY DOC
@mlinha,39 SAY VALOR PICTURE '9,999,999,999.99'
IF CT < 10
msal_ini = msal_ini - VALOR
@mlinha,55 SAY 'D'
ELSE
@mlinha,55 SAY 'C'
msal_ini = msal_ini + VALOR
ENDIF
mlinha = mlinha + 1
IF mlinha > 61
SELECT 1
CAB()
SELECT 2
ENDIF
SKIP
ENDDO
@mlinha,1 SAY mdat_sal
@mlinha,13 SAY 'SALDO ATUAL'
IF msal_ini < 0.00
@mlinha,39 SAY -msal_ini PICTURE '9,999,999,999.99D'
ELSE
@mlinha,39 SAY msal_ini PICTURE '9,999,999,999.99C'
ENDIF
SET CENTURY OFF
@ pRow() + 1, 0 SAY ""
SET DEVICE TO SCREEN
SET PRINTER TO
CLOSE ALL
Imprime ( cARQ ) // envia para impressão
RETURN
FUNCTION CAB()
@1,01 SAY '*** TESTE - MEU CABECALHO *** - EXTRATO PROVISORIO'
@1,65 SAY 'PAGINA'
@1,72 SAY mpag PICTURE '99'
mpag = mpag + 1
@2,09 SAY 'CONTA :'
@2,17 SAY CONTA
@2,23 SAY '-'
@2,25 SAY NOME
@4,03 SAY 'DATA'
@4,13 SAY 'HISTORICO'
@4,25 SAY 'DOCUMENTO'
@4,39 SAY 'V A L O R'
@5,1 SAY REPLICATE('-',78)
mlinha = 7
******************************************
Function Imprime_EXTRATO_PROVISORIO ( cARQ )
******************************************
local nHandler, cLinha
local oPrinter, lPrimeira:=.t.
If Empty( cARQ ) .Or. !File( cARQ )
Hb_Alert( "Arquivo de impressao nao encontrado!" )
Return Nil
EndIf
cPrinter := WIN_PRINTERGETDEFAULT()
If Empty( cPrinter )
Hb_Alert( "Nenhuma impressora Instalada!" )
Return Nil
EndIf
oPrinter := win_prn():New(cPrinter)
oPrinter:Landscape := .F.
oPrinter:FormType := WIN_DMPAPER_A4 // Formato A4
oprinter:SetPrintQuality(-1) // qualidade da impressao
oPrinter:Copies := 1
oPrinter:Create()
IF !oPrinter:Create()
Hb_Alert( "ATENÇÃO!!! Não foi possível Iniciar a Impressão, Favor Verificar se a Impressora esta Ligada." )
return
ELSE
IF !oPrinter:StartDoc("Extrato Provisorio - Impressao Pelo Sistema")
Hb_Alert( "ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar o Spoll da Impressora" )
Return
endif
oPrinter:SetFont("Courier New",10,{ 1, 16 }) // Comprime em 16 caracteres por polegada
nHandler := FOpen( cARQ )
While HB_FReadLine( nHandler, @cLinha ) = 0
If "CONTA CORRENTE" $ Upper( cLinha ) .Or. "***" $ cLinha
If lPrimeira // nao abre nova pagina na primeira sequencia
lPrimeira := .f.
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
ElseIf oPrinter:pRow() > 61 // formato A4 tem 69 linhas. Menos 6 do cabeçalho e 2 do rodapé = 61
oPrinter:NewPage() // inicia nova pagina
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
Else // cabe na mesma pagina...
oPrinter:NewLine() // pula 1 linha
oPrinter:NewLine() // pula + 1 linha
EndIf
EndIf
oPrinter:TextOut( HB_OemToAnsi( cLinha ), .t. )
EndDo
oPrinter:EndDoc()
oPrinter:Destroy()
ENDIF
RETURN NIL