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
Argumento | Obrigat. | Tipo | Descrição |
cAlias | Sim | C | Alias do arquivo a ser impresso. |
cPrograma | Sim | C | Nome do arquivo a ser gerado em disco |
cPerg | Não | C | Grupo de perguntas cadastrado no dicionário SX1. |
cTitulo | Não | C | Título do relatório |
cDesc1 | Não | C | Descrição do relatório. |
cDesc2 | Não | C | Continuação da descrição do relatório. |
cDesc3 | Não | C | Continuação da descrição do relatório. |
lDic | Não | L | Para impressão de cadastro genérico permite a escolha dos campos a serem impressos. |
aOrd | Não | A | Ordem(s) de impressão. |
lCompres | Não | L | Se verdadeiro (.T.) habilita escolha o formato da impressão. |
cTam | Não | C | Tamanho do relatório “P”,”M” ou “G”. |
uPar1 | Não | U | Parâmetro reservado |
lFiltro | Não | L | Se verdadeiro (.T.) permite a utilização do assistente de filtro. |
lCrystal | Não | L | Se verdadeiro (.T.) permite integração com Crystal Report. |
cNomeDrv | Não | C | Nome de um driver de impressão. |
uPar2 | Não | U | Parâmetro reservado. |
lServidor | Não | L | Se verdadeiro (.T.) força impressão no servidor. |
cPortaImpr | Não | C | Define 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