Professional Documents
Culture Documents
ADVPL
JULHO 27, 2011
PARCEIROS
3L Systems
C# Brasil
Dev Mobile Brasil
Projetos e TI
Controle de impresso
by Rogrio Rafael Lino
Abaixo segue uma srie de funes para impresso.
AVALIMP()
A funo AVALIMP() utilzada em relatrios especficos em substituio da funo CABEC(),configurando
a impressora de acordo com o driver escolhido e os parmetros de impresso disponveis no array
aReturn, respeitando o formato utilizado pela funo SETPRINT().
Sintaxe: AVALIMP(nLimite)
Parmetros: nLimite Tamanho do relatrio em colunas, podendo assumir os valores 80,132 ou 220
colunas, respectivamente para os formatos P, M ou G de impresso.
Retorno:
Caracter String com caracteres de controle, dependente das configuraes escolhidas pelo usurio e do
arquivo de driver especificado.
Exemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Cdigo
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
CABEC()
A funo CABEC() determina as configuraes de impresso do relatrio e imprime o cabealho do
mesmo.
Sintaxe: Cabec(cTitulo, cCabec1, cCabec2, cNomeProg, nTamanho, nCompress, aCustomText, lPerg,
cLogo)
Parmetros:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Exemplo:
Cdigo
#INCLUDE "protheus.ch"
User Function MPTR001()
Local cDesc1 := "Este programa tem como objetivo imprimir relatorio "
Local cDesc2 := "de acordo com os parametros informados pelo usuario."
Local cDesc3 := "Listagem de clientes"
Local cTitulo := "Listagem de clientes"
Local lImprime := .T.
// Parametros da SetPrint()
Local cString := "SA1"
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
wnrel :=
SetPrint(cString,cNomeProg,cPerg,@cTitulo,cDesc1,cDesc2,cDesc3,lDic,aOrd,lCompres,c
lter)
If nLastKey == 27
Return
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
10
0
10
1
10
2
10
3
10
4
10
5
10
6
10
7
10
8
10
Endif
SetDefault(aReturn,cString,,,cTamanho,aReturn[4]) // nFormato: 1- Retrato, 2Paisagem
If nLastKey == 27
Return
Endif
nTipo := IIF(aReturn[4]==1,15,18)
//
// Processamento. RPTSTATUS monta janela com a regua de processamento.
//
RptStatus({||
RunReport(cTitulo,cString,cNomeProg,cTamanho,nTipo,nLimite)},cTitulo)
Return
Static Function RunReport(cTitulo,cString,cNomeProg,cTamanho,nTipo,nLimite)
Local nLin := 80
Local cCabec1 := ""
Local cCabec2 := ""
Local cArqInd
cCabec1 := "CODIGO"+Space(2)+"LOJA"+Space(2)+"NOME REDUZIDO"+Space(9)
cCabec1 += "RAZAO SOCIAL"+Space(30)+"CNPJ"+Space(18)+"INSCR.ESTADUAL"+Space(8)
cCabec1 += "CEP"
cCabec2 := "ESTADO"+Space(2)+"MUNICIPIO"+Space(8)+"ENDERECO"
dbSelectArea("TRBSA1")
dbGoTop()
While !EOF()
If lAbortPrint .OR. nLastKey == 27
@nLin,00 PSAY "*** CANCELADO PELO OPERADOR ***"
Exit
9
11
0
11
1
11
2
11
3
11
4
11
5
11
6
11
7
11
8
11
9
12
0
12
1
12
2
12
3
12
4
12
5
12
6
12
7
12
8
12
9
13
0
13
1
13
2
13
3
13
Endif
If nLin > 55 // Salto de Pgina. Neste caso o formulario tem 55 linhas...
Cabec(cTitulo,cCabec1,cCabec2,cNomeProg,cTamanho,nTipo)
nLin := 9
Endif
4
13
5
13
6
13
7
IMPCADAST()
A funo IMPCADAST() cria uma interface simples que permite a impresso dos cadastros do sistema
com parametrizao DE/ATE.
Sintaxe: IMPCADAST(cCab1, cCab2, cCab3, cNomeProg, cTam, nLimite, cAlias)
Parmetros:
cCab1 Primeira linha do cabealho
cCab2 Segunda linha do cabealho
cCab3 Terceira linha do cabealho
cNomeProg Nome do programa
cTam Tamanho do relatrio nos formatos P, M e G.
nLimite Nmero de colunas do relatrio, seguindo o formato especificado no tamanho, aonde:
P- 80 colunas
M- 132 colunas
G- 220 colunas
cAlias Alias do arquivo de cadastro que ser impresso
Retorno: Nenhum.
MS_FLUSH()
A funo MS_FLUSH() envia o spool de impresso para o dispositivo previamente especificado com a
utilizao das funes AVALIMP() ou SETPRINT().
Sintaxe: MS_FLUSH()
Parmetros: Nenhum.
Retorno: Nenhum.
Exemplo:
Cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Static Function
RunReport(cTitulo,cString,cNomeProg,cTamanho,nTipo,nLimite)
Local nLin := 80
Local cCabec1 := ""
Local cCabec2 := ""
Local cArqInd
cCabec1 := "CODIGO"+Space(2)+"LOJA"+Space(2)+"NOME REDUZIDO"+Space(9)
cCabec1 += "RAZAO
SOCIAL"+Space(30)+"CNPJ"+Space(18)+"INSCR.ESTADUAL"+Space(8)
cCabec1 += "CEP"
cCabec2 := "ESTADO"+Space(2)+"MUNICIPIO"+Space(8)+"ENDERECO"
dbSelectArea("TRBSA1")
dbGoTop()
SetRegua(RecCount())
While !EOF()
If lAbortPrint .OR. nLastKey == 27
@nLin,00 PSAY "*** CANCELADO PELO OPERADOR ***"
Exit
Endif
If nLin > 55 // Salto de Pgina. Neste caso o formulario tem 55
linhas...
Cabec(cTitulo,cCabec1,cCabec2,cNomeProg,cTamanho,nTipo)
nLin := 9
Endif
// Primeira linha de detalhe:
@nLin,000 PSAY TRBSA1->A1_COD
@nLin,008 PSAY TRBSA1->A1_LOJA
@nLin,014 PSAY TRBSA1->A1_NREDUZ
@nLin,036 PSAY TRBSA1->A1_NOME
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
OURSPOOL()
A funo OURSPOOL() executa o gerenciador de impresso da aplicao Protheus, permitindo a
visualizao do arquivo de impresso gerado pelo relatrio no formato PostScrip com extenso ##R.
Sintaxe: OURSPOOL(cArquivo)
Parmetros: cArquivo Nome do relatrio a ser visualizado.
Retorno: Nenhum.
Exemplo:
Cdigo
1
2
3
4
5
6
7
8
9
RODA()
A funo RODA() imprime o rodap da pgina do relatrio, o que pode ser feito a cada pgina, ou
somente ao final da impresso.
Pode ser utilizado o ponto de entrada RodaEsp para tratamento de uma impresso especfica.
Sintaxe: Roda(uPar01, uPar02, cSize)
Parmetros:
uPar01 No mais utilizado
uPar02 No mais utilizado
cSize Tamanho do relatrio (P,M,G)
Retorno: Nenhum.
Exemplo:
Cdigo
1
2
3
4
5
6
7
8
#include "protheus.ch"
User Function TestImpr()
Local wnrel
Local cString := "SA1"
Local titulo := "Teste Impresso de Relatorios"
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
SETDEFAULT()
A funo SetDefault() prepara o ambiente de impresso de acordo com as informaes configuradas no
array aReturn, obtidas atravs da funo SetPrint().
Sintaxe: SetDefault ( < aReturn > , < cAlias > , [ uParm3 ] , [ uParm4 ] , [cSize] , [ nFormat ] )
Parmetros:
aReturn Configuraes de impresso.
cAlias Alias do arquivo a ser impresso.
uParm3 Parmetro reservado.
uParm4 Parmetro reservado.
cSize Tamanho da pgina P,M ou G
nFormat Formato da pgina, 1 retrato e 2 paisagem.
Retorno: Nenhum.
Estrutura aReturn:
aReturn[1] Caracter, tipo do formulrio
aReturn[2] Numrico, opo de margem
aReturn[3] Caracter, destinatrio
aReturn[4] Numrico, formato da impresso
aReturn[5] Numrico, dispositivo de impresso
aReturn[6] Caracter, driver do dispositivo de impresso
aReturn[7] Caracter, filtro definido pelo usurio
aReturn[8] Numrico, ordem
aReturn[x] A partir a posio [9] devem ser informados os nomes dos campos que
devem ser considerados no processamento, definidos pelo uso da opo Dicionrio da SetPrint().
SETPRC()
A funo SETPRC() utilizada para posicionar o dispositivo de impresso ativo, previamente
definido pelo uso das funes AVALIMP() ou SETPRINT() , em uma linha/coluna especificada.
Sintaxe: SETPRC(nLinha, nColuna)
Parmetros:
nLinha Linha na qual dever ser posicionado o dispositivo de impresso.
nColuna Coluna na qual dever ser posicionado o dispositivo de impresso.
Retorno: Nenhum.
Exemplo:
Cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
SETPRINT()
A funo SetPrint() cria uma interface padro onde as opes de impresso de um relatrio podem ser
configuradas. Basicamente duas variveis m_pag e aReturn precisam ser declaradas como privadas
(private) antes de executar a SetPrint(), sendo que: m_pag: controla o nmero de pginas.
aReturn: vetor contendo as opes de impresso, sendo sua estrutura bsica composta de 8 (oito)
elementos.
Aps confirmada, os dados so armazenados no vetor aReturn que ser passado como parmetro para
funo SetDefault().
Sintaxe: SetPrint ( < cAlias > , < cProgram > , [ cPergunte ] , [ cTitle ] , [cDesc1 ] , [ cDesc2 ] , [ cDesc3 ] , [
lDic ] , [ aOrd ] , [ lCompres ] , [cSize ] , [ uParm12 ] , [ lFilter ] , [ lCrystal ] , [ cNameDrv ] , [uParm16 ] ,
[ lServer ] , [ cPortPrint ] ) > cReturn
Parmetros:
cAlias Alias do arquivo a ser impresso.
cProgram Nome do arquivo a ser gerado em disco.
cPergunte Grupo de perguntas cadastrado no dicionrio SX1.
cTitle Ttulo do relatrio.
cDesc1 Descrio do relatrio.
aReturn[x] A partir a posio [9] devem ser informados os nomes dos campos que devem ser
considerados no processamento, definidos pelo uso da opo.
Referncia: http://pt.scribd.com/doc/58402187/88/GUIA-DE-REFERENCIA-RAPIDA-Funcoes-eComandos-ADVPL
Tags: avalimp advpl cabec advpl Controle de Impresso impcadast advpl impressao
advpl ms_flush advplourspool advpl roda advpl setdefault advpl setprc advpl setprint advpl