Interface onde são configuradas as opções de impressão.

Sintaxe

SetPrint( cAlias, cPrograma, [ cPerg ], [ cTitulo ], [ cDesc1 ], [ cDesc2 ], [ cDesc3 ], [ lDic ], [ aOrd ], [ lCompres ], [ cTam ], [ uPar1 ], lFiltro, [ lCrystal ], [ cNomeDrv ], [ uPar2 ], [ lServidor ], [ cPortaImpr ] ) -> caracter

ArgumentoObrigat.TipoDescrição
 cAliasSimCAlias do arquivo a ser impresso.
cProgramaSimCNome do arquivo a ser gerado em disco
cPergNãoCGrupo de perguntas cadastrado no dicionário SX1.
cTituloNãoCTítulo do relatório

cDesc1

Não

CDescrição do relatório.
cDesc2NãoCContinuação da descrição do relatório.
cDesc3NãoCContinuação da descrição do relatório.
lDic NãoLPara impressão de cadastro genérico permite a escolha dos campos a serem impressos.
aOrdNãoAOrdem(s) de impressão.
lCompresNãoLSe verdadeiro (.T.) habilita escolha o formato da impressão.
cTamNãoCTamanho do relatório “P”,”M” ou “G”.
uPar1NãoUParâmetro reservado
lFiltroNãoLSe verdadeiro (.T.) permite a utilização do assistente de filtro.
lCrystalNãoLSe verdadeiro (.T.) permite integração com Crystal Report.
cNomeDrvNãoCNome de um driver de impressão.
uPar2NãoUParâmetro reservado.
lServidorNãoLSe verdadeiro (.T.) força impressão no servidor.
cPortaImprNãoCDefine uma porta de impressão padrão.

Descrição

A função SetPrint() cria a interface (diálogo) onde as opções de impressão de um relatório podem ser configuradas. Basicamente duas variáveis m_pag (*) e aReturn (**) precisam ser declaradas como privadas (private) antes de executar a SetPrint(). Após confirmada, os dados são armazenados no vetor aReturn que será passado como parâmetro para função SetDefault().

(*) controla o número de páginas.

(**) vetor contendo as opções de impressão, sua estrutura é composta de 8 (oito) elementos: 1º – caracter, tipo do formulário; 2º – numérico, opção de margem; 3º –  caracter, destinatário; 4º – numérico, formato da impressão; 5º – numérico, dispositivo de impressão; 6º – reservado; 7º – reservado; 8º – numérico, ordem.

Exemplo

User Function <nome-da-função>( )

Local cProgram := ‘Exemplo’  // nome do relatório

Local cAlias := ‘XXX’  // alias do arquivo

Local cPerg := ‘XXXXXX’  // grupo de perguntas

Local cTitulo := ‘Titulo do relatório’

Local cDesc1 := ‘Descrição’

Local cDesc2 := ‘continuação da descrição’

Local cDesc3 := ‘continuação da descrição’

Local lDic := .F.  // não utiliza dicionário

Local aOrd := { ‘1º Ordem’, ‘2º ordem’, ‘3º ordem’ }

Local lCompres :=.F.

Local cTam := “G”

Private m_pag := 1

Private aReturn := { “Zebrado”, 1,”Administracao”, 1, 2, 1, “”,1 }

Private  wrel

Pergunte( cPerg, .F. )

wrel := SetPrint( cAlias, cProgram, cPerg, @cTitulo, cDesc1, cDesc2, cDesc3, lDic, aOrd , lCompres, cTam )

If nLastKey == 27

Set Filter To

Return

EndIf

SetDefault( aReturn, cAlias )

If nLastKey == 27

Set Filter To

Return

EndIf

RptStatus( {|lFim| Imprime( @lFim, cAlias, cTitulo, cProgram, cTamanho ) }, cTitulo )

Return

 

// rotina de impressão

Static Function Imprime( lFim, cAlias, cTitulo, cProgram, cTamanho )

Local nLin   := 80

Local cCabec1 := ‘Cabecalho 1’

Local cCabec2 := ‘Cabecalho 2’

dbSelectArea( cAlias )

SetRegua( RecCount() )

While !Eof() .And. ( XX_COD >= MV_PAR01 .And. XX_COD <= MV_PAR02 )

If lFim

@Prow()+1,001 PSAY “CANCELADO PELO OPERADOR”

Exit

EndIf

If nLin > 58

Cabec( cTitulo, cCabec1, cCabec2, cProgram, cTamanho, 15 )  // cabeçalho

nLin := 8

EndIf

@ nLin,000 PSAY __PrtFatLine()

@ nLin++,001 PSAY …

@ nLin++,001 PSAY …

@ nLin++,001 PSAY …

@ nLin,000 PSAY __PrtThinLine()

IncRegua()

dbSkip()

End

IF nLin != 80

nLin++

If nLin > 60

Cabec( cTitulo, cCabec1, cCabec2, cProgram, cTamanho, 15 )  // cabeçalho

Endif

@ nLin,000 PSAY __PrtThinLine()

Roda( 0, cTitulo, cTamanho ) // Rodapé

EndIf

If aReturn[5] = 1

Set Printer TO

dbCommitAll()

OurSpool( wrel )

Endif

MS_FLUSH()

Return

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Necessita de ajuda?