Forum.pcsoft.fr/fr-FR/pcsoft.br.windev/1184-exemplo-relatorio-manual/read.awp?lastview
Prezados,
Exemplo de um relatório manual
-- Script generated by WinDev on 22/04/2016 20:32:34
-- Tables of RelatorioManual.wda analysis
-- for Generic SQL (ANSI 92)
-- Creating the Clientes table
CREATE TABLE "Clientes" (
"Codigo" INTEGER ,
"Nome" VARCHAR(50) ,
"Endereco" VARCHAR(50) ,
"Telefone" VARCHAR(20) ,
"Cidade" VARCHAR(20) ,
"UF" VARCHAR(2) );
-- Tables of RelatorioManual.wda analysis
-- for Generic SQL (ANSI 92)
-- Creating the Clientes table
CREATE TABLE "Clientes" (
"Codigo" INTEGER ,
"Nome" VARCHAR(50) ,
"Endereco" VARCHAR(50) ,
"Telefone" VARCHAR(20) ,
"Cidade" VARCHAR(20) ,
"UF" VARCHAR(2) );
Crie essas Variáveis Globais:
GLOBAL
gnRelNumPagina is int
gnRelContaLinhas is int
gnRelLimiteLinhas is int
gnRelLimiteColunas is int
garrRelCabecalho is array of strings
garrRelCabecalhoComp is array of string
gsRelTitulo is string
gsRelSubTitulo is string
gnRelID is int
gsRelVersao is string
gbRelPrimeiraPagina is boolean
gsPastaReport is string = "C:\Temp"
gbSQLError is boolean = False
gnRelNumPagina is int
gnRelContaLinhas is int
gnRelLimiteLinhas is int
gnRelLimiteColunas is int
garrRelCabecalho is array of strings
garrRelCabecalhoComp is array of string
gsRelTitulo is string
gsRelSubTitulo is string
gnRelID is int
gsRelVersao is string
gbRelPrimeiraPagina is boolean
gsPastaReport is string = "C:\Temp"
gbSQLError is boolean = False
Procedures Globais - uso genérico:
// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] CenterString (<spTexto> [, <npTamanho>])
//
// Parameters:
// spTexto: <specify the role of Param1>
// npTamanho (default value=0): <specify the role of npTamanho>
// Return Value:
// ANSI string: // None
//
// For instance:
// Indicate an example.
//
Procedure CenterString(spTexto,npTamanho = 0)
IF npTamanho = 0 THEN // Assume largura da folha
npTamanho = gnRelLimiteColunas
END
nEspaco_ is int = (npTamanho - Length(NoSpace(spTexto))) / 2
sTexto_ is string = QtdeX(nEspaco_) + spTexto
RESULT sTexto_
// Syntax:
//[ <Result> = ] CenterString (<spTexto> [, <npTamanho>])
//
// Parameters:
// spTexto: <specify the role of Param1>
// npTamanho (default value=0): <specify the role of npTamanho>
// Return Value:
// ANSI string: // None
//
// For instance:
// Indicate an example.
//
Procedure CenterString(spTexto,npTamanho = 0)
IF npTamanho = 0 THEN // Assume largura da folha
npTamanho = gnRelLimiteColunas
END
nEspaco_ is int = (npTamanho - Length(NoSpace(spTexto))) / 2
sTexto_ is string = QtdeX(nEspaco_) + spTexto
RESULT sTexto_
// Summary: <specify the procedure action>
// Syntax:
//ProgBarra (<psBarra>, <pnMaximo>)
//
// Parameters:
// psBarra: <specify the role of PROGBAR_Barra>
// pnMaximo: <specify the role of Param2>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ProgBarra(psBarra,pnMaximo)
sNome_ is string = psBarra..Name
{sNome_}..Visible = True
{sNome_}..Value = 0
{sNome_}..MinValue = 0
{sNome_}..MaxValue = pnMaximo
// Syntax:
//ProgBarra (<psBarra>, <pnMaximo>)
//
// Parameters:
// psBarra: <specify the role of PROGBAR_Barra>
// pnMaximo: <specify the role of Param2>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ProgBarra(psBarra,pnMaximo)
sNome_ is string = psBarra..Name
{sNome_}..Visible = True
{sNome_}..Value = 0
{sNome_}..MinValue = 0
{sNome_}..MaxValue = pnMaximo
// Summary: <specify the procedure action>
// Syntax:
//[ <Result> = ] QtdeX (<npQtde>)
//
// Parameters:
// npQtde: <specify the role of npQtde>
// Return Value:
// variant: // None
//
// For instance:
// Indicate an example.
//
Procedure QtdeX(npQtde)
RESULT RepeatString(" ",npQtde)
// Syntax:
//[ <Result> = ] QtdeX (<npQtde>)
//
// Parameters:
// npQtde: <specify the role of npQtde>
// Return Value:
// variant: // None
//
// For instance:
// Indicate an example.
//
Procedure QtdeX(npQtde)
RESULT RepeatString(" ",npQtde)
// Summary: <specify the procedure action>
// Syntax:
//ReportBegin (<npDestino>, <npImpressora>, <npOrientation> [, <npLinhas> [, <npColunas>]])
//
// Parameters:
// npDestino: <specify the role of COMBO_Destino>
// npImpressora: <specify the role of COMBO_Impressora>
// npOrientation: <specify the role of Param3>
// npLinhas (default value=116): <specify the role of npLinhas>
// npColunas (default value=149): <specify the role of npColunas>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportBegin(npDestino,npImpressora,npOrientation,npLinhas = 116,npColunas = 149)
// Define o nome do arquivo PDF e job de impressão
sPastaPDF_ is string
sTitulo is string = Replace(gsRelTitulo,"/","_",IgnoreCase)
sTitulo = Replace(sTitulo,"\","_",IgnoreCase)
sJobName_ is string = sTitulo + "_" + DateToString(DateSys(),"AAAAMMDD") + "_" +TimeToString(Now(),"HHMMSS")
// Formatação da impressão
iReset()
// Define destino
SWITCH npDestino
CASE 1 // Visualização
iPreview(1)
CASE 2 // Impressão
sNomeImpressora is string = npImpressora[npImpressora] // Impressão
iConfigure(sNomeImpressora)
iDestination(iPrinter,sJobName_)
CASE 3 // PDF
sPastaPDF_ = gsPastaReport
iDestination(iPDF,gsPastaReport + ["\"] + sJobName_) // PDF
END
iParameter(iPaperSize, iPaperSize_A4)
iParameter(iOrientation, npOrientation)
iMargin(10, 0, 10, 10)
// Formatação das fontes
iCreateFont(1, 8, iNormal, "Courier new", iBlack, 0) // Cabeçalho
iCreateFont(2, 6, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 6
iCreateFont(3, 6, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 6
iCreateFont(4, 7, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 7
iCreateFont(5, 7, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 7
iCreateFont(60, 8, iItalic, “Courier new”, iBlack, 0) // Detalhes tamanho 8 italic
iCreateFont(6, 8, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 8
iCreateFont(7, 8, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 8
iCreateFont(8, 9, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 9
iCreateFont(9, 9, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 9
iCreateFont(10, 14, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 14
iCreateFont(11, 14, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 14
iCreateFont(12, 12, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 12
iCreateFont(13, 12, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 12
iCreateFont(14, 16, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 16
iCreateFont(15, 16, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 16
iCreateFont(16, 10, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 10
iCreateFont(17, 10, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 10
iCreateFont(18, 5, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 5
iCreateFont(19, 5, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 5
// Limite de linhas de acordo com a altura da impressão
IF npOrientation = iOrientation_Portrait THEN
gnRelLimiteLinhas = npLinhas //116 /118
gnRelLimiteColunas = npColunas //149
ELSE
IF npLinhas <> 116 THEN
gnRelLimiteLinhas = npLinhas
ELSE
gnRelLimiteLinhas = 77 //79
END
IF npColunas <> 149 THEN
gnRelLimiteColunas = npColunas
ELSE
gnRelLimiteColunas = 218
END
END
// Inicializa variáveis globais
gbRelPrimeiraPagina = True // após a impressão do cabeçalho será setado para false
gbSQLError = False // havendo erro de SQL será setado para true
gsRelSubTitulo = ""
gnRelContaLinhas = 999
gnRelNumPagina = 0
ArrayDeleteAll(garrRelCabecalho)
ArrayDeleteAll(garrRelCabecalhoComp)
// Syntax:
//ReportBegin (<npDestino>, <npImpressora>, <npOrientation> [, <npLinhas> [, <npColunas>]])
//
// Parameters:
// npDestino: <specify the role of COMBO_Destino>
// npImpressora: <specify the role of COMBO_Impressora>
// npOrientation: <specify the role of Param3>
// npLinhas (default value=116): <specify the role of npLinhas>
// npColunas (default value=149): <specify the role of npColunas>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportBegin(npDestino,npImpressora,npOrientation,npLinhas = 116,npColunas = 149)
// Define o nome do arquivo PDF e job de impressão
sPastaPDF_ is string
sTitulo is string = Replace(gsRelTitulo,"/","_",IgnoreCase)
sTitulo = Replace(sTitulo,"\","_",IgnoreCase)
sJobName_ is string = sTitulo + "_" + DateToString(DateSys(),"AAAAMMDD") + "_" +TimeToString(Now(),"HHMMSS")
// Formatação da impressão
iReset()
// Define destino
SWITCH npDestino
CASE 1 // Visualização
iPreview(1)
CASE 2 // Impressão
sNomeImpressora is string = npImpressora[npImpressora] // Impressão
iConfigure(sNomeImpressora)
iDestination(iPrinter,sJobName_)
CASE 3 // PDF
sPastaPDF_ = gsPastaReport
iDestination(iPDF,gsPastaReport + ["\"] + sJobName_) // PDF
END
iParameter(iPaperSize, iPaperSize_A4)
iParameter(iOrientation, npOrientation)
iMargin(10, 0, 10, 10)
// Formatação das fontes
iCreateFont(1, 8, iNormal, "Courier new", iBlack, 0) // Cabeçalho
iCreateFont(2, 6, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 6
iCreateFont(3, 6, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 6
iCreateFont(4, 7, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 7
iCreateFont(5, 7, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 7
iCreateFont(60, 8, iItalic, “Courier new”, iBlack, 0) // Detalhes tamanho 8 italic
iCreateFont(6, 8, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 8
iCreateFont(7, 8, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 8
iCreateFont(8, 9, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 9
iCreateFont(9, 9, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 9
iCreateFont(10, 14, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 14
iCreateFont(11, 14, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 14
iCreateFont(12, 12, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 12
iCreateFont(13, 12, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 12
iCreateFont(14, 16, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 16
iCreateFont(15, 16, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 16
iCreateFont(16, 10, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 10
iCreateFont(17, 10, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 10
iCreateFont(18, 5, iBold, “Courier new”, iBlack, 0) // Titulos e totalizadores tamanho 5
iCreateFont(19, 5, iNormal, “Courier new”, iBlack, 0) // Detalhes tamanho 5
// Limite de linhas de acordo com a altura da impressão
IF npOrientation = iOrientation_Portrait THEN
gnRelLimiteLinhas = npLinhas //116 /118
gnRelLimiteColunas = npColunas //149
ELSE
IF npLinhas <> 116 THEN
gnRelLimiteLinhas = npLinhas
ELSE
gnRelLimiteLinhas = 77 //79
END
IF npColunas <> 149 THEN
gnRelLimiteColunas = npColunas
ELSE
gnRelLimiteColunas = 218
END
END
// Inicializa variáveis globais
gbRelPrimeiraPagina = True // após a impressão do cabeçalho será setado para false
gbSQLError = False // havendo erro de SQL será setado para true
gsRelSubTitulo = ""
gnRelContaLinhas = 999
gnRelNumPagina = 0
ArrayDeleteAll(garrRelCabecalho)
ArrayDeleteAll(garrRelCabecalhoComp)
// Summary: <specify the procedure action>
// Syntax:
//ReportEnd ( [<bpRodape>])
//
// Parameters:
// bpRodape (default value=1): <specify the role of bpRodape>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportEnd(bpRodape = True)
IF bpRodape THEN
ReportFooter()
END
iEndPrinting
// Syntax:
//ReportEnd ( [<bpRodape>])
//
// Parameters:
// bpRodape (default value=1): <specify the role of bpRodape>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportEnd(bpRodape = True)
IF bpRodape THEN
ReportFooter()
END
iEndPrinting
// Summary: <specify the procedure action>
// Syntax:
//ReportFooter ()
//
// Parameters:
// None
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportFooter()
sTexto_ is string
sSite_ is string = "www.seusite.com.br"
nLarguraTexto_, nLarguraCab_ are int
IF iParameter(iOrientation) = iOrientation_Portrait THEN
nLarguraCab_ = 108
ELSE
nLarguraCab_ = 160
END
iBorder(0, iPageHeight()-10, iPageWidth(), iPageHeight()-6, 1, 20, LightGray, iContinuous, iSolid)
sTexto_ = "Identificação do seu aplicativo"
nLarguraTexto_ = nLarguraCab_ - Length(sTexto_) - Length(sSite_)
iYPos(iPageHeight()-9)
iPrint(iFont(1) + QtdeX(2) + sTexto_ + QtdeX(nLarguraTexto_) + sSite_)
// Syntax:
//ReportFooter ()
//
// Parameters:
// None
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportFooter()
sTexto_ is string
sSite_ is string = "www.seusite.com.br"
nLarguraTexto_, nLarguraCab_ are int
IF iParameter(iOrientation) = iOrientation_Portrait THEN
nLarguraCab_ = 108
ELSE
nLarguraCab_ = 160
END
iBorder(0, iPageHeight()-10, iPageWidth(), iPageHeight()-6, 1, 20, LightGray, iContinuous, iSolid)
sTexto_ = "Identificação do seu aplicativo"
nLarguraTexto_ = nLarguraCab_ - Length(sTexto_) - Length(sSite_)
iYPos(iPageHeight()-9)
iPrint(iFont(1) + QtdeX(2) + sTexto_ + QtdeX(nLarguraTexto_) + sSite_)
// Summary: <specify the procedure action>
// Syntax:
//ReportHeader (<npFont>)
//
// Parameters:
// npFont: <specify the role of npFontCabecalho_>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportHeader(npFont)
sTexto_ is string
sEmpresa_ is string = "SUA EMPRESA LTDA"
nLarguraTexto_, nLarguraCab_ are int
IF iParameter(iOrientation) = iOrientation_Portrait THEN
nLarguraCab_ = 108
ELSE
nLarguraCab_ = 160
END
gnRelNumPagina ++
gnRelContaLinhas = 0
IF gsRelTitulo > "" THEN
IF gbRelPrimeiraPagina = False THEN
ReportFooter()
iSkipPage()
END
gbRelPrimeiraPagina = False
iBorder(0, 0, iPageWidth(), 11, 1, 20, LightGray, iContinuous, iSolid)
sTexto_ = "Folha: " + NumToString(gnRelNumPagina,"03d")
nLarguraTexto_ = nLarguraCab_ - Length(sTexto_) - Length(sEmpresa_)
iPrint(iFont(1) + iYPos(1) + QtdeX(2) + sEmpresa_ + QtdeX(nLarguraTexto_) + sTexto_)
sTexto_ = DateToString(DateSys(),"DD/MM/YYYY") + " " + TimeToString(Now(),"HH:MM")
nLarguraTexto_ = nLarguraCab_ - Length(gsRelTitulo) - Length(sTexto_)
iPrint(iFont(1) + QtdeX(2) + gsRelTitulo + QtdeX(nLarguraTexto_) + sTexto_)
sTexto_ = DateToString(Today(),"Mmmm/YYYY")
nLarguraTexto_ = nLarguraCab_ - Length(gsRelSubTitulo) - Length(sTexto_)
iPrint(iFont(1) + QtdeX(2) + gsRelSubTitulo + QtdeX(nLarguraTexto_) + sTexto_)
iSkipLine()
// Imprime complemento do titulo
IF ArrayCount(garrRelCabecalhoComp) > 0 THEN
// Apura a linha maior do array
nLarguraLin is int
FOR EACH iLinha OF garrRelCabecalhoComp
nLarguraLin = Max(nLarguraLin,Length(iLinha))
END
nDistanciaMargem is int = ((gnRelLimiteColunas - nLarguraLin) / 2)
// Imprime array
FOR EACH iLinha OF garrRelCabecalhoComp
iPrint(iFont(npFont) + QtdeX(nDistanciaMargem) + iLinha)
gnRelContaLinhas ++
END
iSkipLine()
gnRelContaLinhas ++
// Limpa array para que seja impresso apenas na primeira página
ArrayDeleteAll(garrRelCabecalhoComp)
END
// Imprime cabeçalho
IF ArrayCount(garrRelCabecalho) > 0 THEN
FOR EACH iLinha OF garrRelCabecalho
IF iLinha > "" THEN
iPrint(iFont(npFont) + QtdeX(1) + iLinha)
gnRelContaLinhas ++
END
END
END
iSkipLine()
// iPrint(iFont(npFont) + sRegua)
gnRelContaLinhas += 4
END
// Syntax:
//ReportHeader (<npFont>)
//
// Parameters:
// npFont: <specify the role of npFontCabecalho_>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportHeader(npFont)
sTexto_ is string
sEmpresa_ is string = "SUA EMPRESA LTDA"
nLarguraTexto_, nLarguraCab_ are int
IF iParameter(iOrientation) = iOrientation_Portrait THEN
nLarguraCab_ = 108
ELSE
nLarguraCab_ = 160
END
gnRelNumPagina ++
gnRelContaLinhas = 0
IF gsRelTitulo > "" THEN
IF gbRelPrimeiraPagina = False THEN
ReportFooter()
iSkipPage()
END
gbRelPrimeiraPagina = False
iBorder(0, 0, iPageWidth(), 11, 1, 20, LightGray, iContinuous, iSolid)
sTexto_ = "Folha: " + NumToString(gnRelNumPagina,"03d")
nLarguraTexto_ = nLarguraCab_ - Length(sTexto_) - Length(sEmpresa_)
iPrint(iFont(1) + iYPos(1) + QtdeX(2) + sEmpresa_ + QtdeX(nLarguraTexto_) + sTexto_)
sTexto_ = DateToString(DateSys(),"DD/MM/YYYY") + " " + TimeToString(Now(),"HH:MM")
nLarguraTexto_ = nLarguraCab_ - Length(gsRelTitulo) - Length(sTexto_)
iPrint(iFont(1) + QtdeX(2) + gsRelTitulo + QtdeX(nLarguraTexto_) + sTexto_)
sTexto_ = DateToString(Today(),"Mmmm/YYYY")
nLarguraTexto_ = nLarguraCab_ - Length(gsRelSubTitulo) - Length(sTexto_)
iPrint(iFont(1) + QtdeX(2) + gsRelSubTitulo + QtdeX(nLarguraTexto_) + sTexto_)
iSkipLine()
// Imprime complemento do titulo
IF ArrayCount(garrRelCabecalhoComp) > 0 THEN
// Apura a linha maior do array
nLarguraLin is int
FOR EACH iLinha OF garrRelCabecalhoComp
nLarguraLin = Max(nLarguraLin,Length(iLinha))
END
nDistanciaMargem is int = ((gnRelLimiteColunas - nLarguraLin) / 2)
// Imprime array
FOR EACH iLinha OF garrRelCabecalhoComp
iPrint(iFont(npFont) + QtdeX(nDistanciaMargem) + iLinha)
gnRelContaLinhas ++
END
iSkipLine()
gnRelContaLinhas ++
// Limpa array para que seja impresso apenas na primeira página
ArrayDeleteAll(garrRelCabecalhoComp)
END
// Imprime cabeçalho
IF ArrayCount(garrRelCabecalho) > 0 THEN
FOR EACH iLinha OF garrRelCabecalho
IF iLinha > "" THEN
iPrint(iFont(npFont) + QtdeX(1) + iLinha)
gnRelContaLinhas ++
END
END
END
iSkipLine()
// iPrint(iFont(npFont) + sRegua)
gnRelContaLinhas += 4
END
// Summary: <specify the procedure action>
// Syntax:
//ReportPrint (<npFont>, <spLinhaTexto> [, <npLinhaEmBrancoDepois> [, <npLinhaEmBrancoAntes> [, <bpBorda>]]])
//
// Parameters:
// npFont: <specify the role of npFont>
// spLinhaTexto: <specify the role of spLinhaTexto>
// npLinhaEmBrancoDepois (default value=0): <specify the role of npLinhaEmBrancoDepois>
// npLinhaEmBrancoAntes (default value=0): <specify the role of npLinhaEmBrancoAntes>
// bpBorda (default value=0): <specify the role of bpBorda>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportPrint(npFont,spLinhaTexto,npLinhaEmBrancoDepois = 0, npLinhaEmBrancoAntes = 0,bpBorda = False)
npFontCabecalho_ is int
// Define tamanho da fonte para o "sub" cabeçalho
IF IsOdd(npFont) THEN
npFontCabecalho_ = npFont - 1
ELSE
npFontCabecalho_ = npFont
END
// Imprime linhas em branco ANTES da impressão do texto
IF npLinhaEmBrancoAntes > 0 THEN
FOR i = 1 _TO_ npLinhaEmBrancoAntes
iSkipLine()
gnRelContaLinhas ++
IF gnRelContaLinhas >= gnRelLimiteLinhas THEN
ReportHeader(npFontCabecalho_)
BREAK
END
END
END
// Imprime o cabeçalho se foi atingido o limite máximo de linhas
IF gnRelContaLinhas >= gnRelLimiteLinhas THEN
ReportHeader(npFontCabecalho_)
END
// Imprime borda
IF bpBorda THEN
iBorder(iXPos(),iYPos()-1,iPageWidth(),iYPos()+3,1,20,LightGray,iContinuous,iSolid)
END
// Imprime texto
iPrint(iFont(npFont) + spLinhaTexto)
gnRelContaLinhas ++
// Imprime linhas em branco APOS a impressão do texto
IF gnRelContaLinhas < gnRelLimiteLinhas THEN
IF npLinhaEmBrancoDepois > 0 THEN
FOR i = 1 _TO_ npLinhaEmBrancoDepois
iSkipLine()
gnRelContaLinhas ++
IF gnRelContaLinhas >= gnRelLimiteLinhas THEN
ReportHeader(npFontCabecalho_)
BREAK
END
END
END
END
// Syntax:
//ReportPrint (<npFont>, <spLinhaTexto> [, <npLinhaEmBrancoDepois> [, <npLinhaEmBrancoAntes> [, <bpBorda>]]])
//
// Parameters:
// npFont: <specify the role of npFont>
// spLinhaTexto: <specify the role of spLinhaTexto>
// npLinhaEmBrancoDepois (default value=0): <specify the role of npLinhaEmBrancoDepois>
// npLinhaEmBrancoAntes (default value=0): <specify the role of npLinhaEmBrancoAntes>
// bpBorda (default value=0): <specify the role of bpBorda>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure ReportPrint(npFont,spLinhaTexto,npLinhaEmBrancoDepois = 0, npLinhaEmBrancoAntes = 0,bpBorda = False)
npFontCabecalho_ is int
// Define tamanho da fonte para o "sub" cabeçalho
IF IsOdd(npFont) THEN
npFontCabecalho_ = npFont - 1
ELSE
npFontCabecalho_ = npFont
END
// Imprime linhas em branco ANTES da impressão do texto
IF npLinhaEmBrancoAntes > 0 THEN
FOR i = 1 _TO_ npLinhaEmBrancoAntes
iSkipLine()
gnRelContaLinhas ++
IF gnRelContaLinhas >= gnRelLimiteLinhas THEN
ReportHeader(npFontCabecalho_)
BREAK
END
END
END
// Imprime o cabeçalho se foi atingido o limite máximo de linhas
IF gnRelContaLinhas >= gnRelLimiteLinhas THEN
ReportHeader(npFontCabecalho_)
END
// Imprime borda
IF bpBorda THEN
iBorder(iXPos(),iYPos()-1,iPageWidth(),iYPos()+3,1,20,LightGray,iContinuous,iSolid)
END
// Imprime texto
iPrint(iFont(npFont) + spLinhaTexto)
gnRelContaLinhas ++
// Imprime linhas em branco APOS a impressão do texto
IF gnRelContaLinhas < gnRelLimiteLinhas THEN
IF npLinhaEmBrancoDepois > 0 THEN
FOR i = 1 _TO_ npLinhaEmBrancoDepois
iSkipLine()
gnRelContaLinhas ++
IF gnRelContaLinhas >= gnRelLimiteLinhas THEN
ReportHeader(npFontCabecalho_)
BREAK
END
END
END
END
CODE
Botão Cadastro de Clientes, Carga inicial:
// Cadastrar clientes
FOR ALL Clientes
HDelete(Clientes)
END
HReset(Clientes)
Clientes.Codigo = 1
Clientes.Nome = "JOAO"
Clientes.Endereco = "RUA X, numero 10"
Clientes.Telefone = "(51) 1111-2222"
Clientes.Cidade = "PORTO ALEGRE"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 2
Clientes.Nome = "PEDRO"
Clientes.Endereco = "RUA Y, numero 10"
Clientes.Telefone = "(51) 333-2222"
Clientes.Cidade = "PORTO ALEGRE"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 3
Clientes.Nome = "CARLOS"
Clientes.Endereco = "RUA Z, numero 12"
Clientes.Telefone = "(51) 1111-4444"
Clientes.Cidade = "CAXIAS DO SUL"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 4
Clientes.Nome = "ANTONIO"
Clientes.Endereco = "RUA W, numero 14"
Clientes.Telefone = "(51) 5555-2222"
Clientes.Cidade = "CAXIAS DO SUL"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 5
Clientes.Nome = "LUIS"
Clientes.Endereco = "RUA W, numero 14"
Clientes.Telefone = "(51) 1111-4444"
Clientes.Cidade = "PORTO ALEGRE"
Clientes.UF = "RS"
HAdd(Clientes)
FOR ALL Clientes
HDelete(Clientes)
END
HReset(Clientes)
Clientes.Codigo = 1
Clientes.Nome = "JOAO"
Clientes.Endereco = "RUA X, numero 10"
Clientes.Telefone = "(51) 1111-2222"
Clientes.Cidade = "PORTO ALEGRE"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 2
Clientes.Nome = "PEDRO"
Clientes.Endereco = "RUA Y, numero 10"
Clientes.Telefone = "(51) 333-2222"
Clientes.Cidade = "PORTO ALEGRE"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 3
Clientes.Nome = "CARLOS"
Clientes.Endereco = "RUA Z, numero 12"
Clientes.Telefone = "(51) 1111-4444"
Clientes.Cidade = "CAXIAS DO SUL"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 4
Clientes.Nome = "ANTONIO"
Clientes.Endereco = "RUA W, numero 14"
Clientes.Telefone = "(51) 5555-2222"
Clientes.Cidade = "CAXIAS DO SUL"
Clientes.UF = "RS"
HAdd(Clientes)
HReset(Clientes)
Clientes.Codigo = 5
Clientes.Nome = "LUIS"
Clientes.Endereco = "RUA W, numero 14"
Clientes.Telefone = "(51) 1111-4444"
Clientes.Cidade = "PORTO ALEGRE"
Clientes.UF = "RS"
HAdd(Clientes)
CODE
Botão Imprimir Clientes
Open(WIN_RPT_0001_Cadastro_clientes)
Seleção: Visualizar ou Imprimir
Open da JANELA (GLOBAL)
Procedure WIN_RPT_0001_Cadastro_clientes()
gsJanela is string = MySelf..Name
gsRelTitulo = MyWindow..NoteTitle // "" para formulários sem cabeçalho
gsProcesso is string = ExtractString(gsJanela,2,"_") + ExtractString(gsJanela,3,"_")
gbImprimiu is boolean
gsJanela is string = MySelf..Name
gsRelTitulo = MyWindow..NoteTitle // "" para formulários sem cabeçalho
gsProcesso is string = ExtractString(gsJanela,2,"_") + ExtractString(gsJanela,3,"_")
gbImprimiu is boolean
COMBO_DESTINO
OPÇÕES:
Visualização
Impressão
//SELECTION ROW
// Habilita/Desabilita impressora
IF MySelf = 2 THEN
COMBO_Impressora..Grayed = False
ELSE
COMBO_Impressora..Grayed = True
END
IF MySelf = 2 THEN
COMBO_Impressora..Grayed = False
ELSE
COMBO_Impressora..Grayed = True
END
COMBO_IMPRESSORAS
// Carrega lista de impressoras
ListAdd(MySelf, iListPrinter())
// Seleciona a impressora padrão
ListSelectPlus(MySelf, ListSeek(MySelf, iInfoPrinter(False, iPrinterName)))
ListAdd(MySelf, iListPrinter())
// Seleciona a impressora padrão
ListSelectPlus(MySelf, ListSeek(MySelf, iInfoPrinter(False, iPrinterName)))
BOTAO IMPRIMIR
CODE:
IF COMBO_Destino = 1 THEN
LocalImpressao()
ELSE
ThreadExecute("Impressao",threadNormal,LocalImpressao)
END
LocalImpressao()
ELSE
ThreadExecute("Impressao",threadNormal,LocalImpressao)
END
BOTAO CANCELAR
CODE:
IF BTN_ok..State = Grayed THEN
ThreadStop("Impressao",Infinite)
Info("Processo interrompido pelo usuário.")
PROGBAR_Barra..Value = 0
BTN_ok..Grayed = False
HourGlass(False)
RETURN
END
Close()
ThreadStop("Impressao",Infinite)
Info("Processo interrompido pelo usuário.")
PROGBAR_Barra..Value = 0
BTN_ok..Grayed = False
HourGlass(False)
RETURN
END
Close()
LOCAL PROCEDURE
CODE
// Summary: <specify the procedure action>
// Syntax:
//LocalEndReport (<npDestino>)
//
// Parameters:
// npDestino: <specify the role of npDestino>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure LocalEndReport(npDestino)
IF NOT gbSQLError THEN
IF gbRelPrimeiraPagina THEN
Info("Não há registros para imprimir.")
ELSE
ReportEnd()
IF npDestino = 3 THEN // Abre PDF
ShellExecute(iLastFile())
END
END
ELSE
iCloseReport()
Info("Documente a mensagem de erro para a JB Sistemas.",1)
END
// Syntax:
//LocalEndReport (<npDestino>)
//
// Parameters:
// npDestino: <specify the role of npDestino>
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure LocalEndReport(npDestino)
IF NOT gbSQLError THEN
IF gbRelPrimeiraPagina THEN
Info("Não há registros para imprimir.")
ELSE
ReportEnd()
IF npDestino = 3 THEN // Abre PDF
ShellExecute(iLastFile())
END
END
ELSE
iCloseReport()
Info("Documente a mensagem de erro para a JB Sistemas.",1)
END
LOCAL PROCEDURE
CODE
// Summary: <specify the procedure action>
// Syntax:
//LocalImpressao ()
//
// Parameters:
// None
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure LocalImpressao()
// Confere se usuário deseja reimprimir o mesmo relatório novamente
IF gbImprimiu THEN
IF NOT YesNo("Você deseja reimprimir este relatório?") THEN
RETURN
END
END
gbImprimiu = True
BTN_ok..Grayed = True
HourGlass()
// Parâmetros do relatório
ReportBegin(COMBO_Destino,COMBO_Impressora,iOrientation_Landscape)
ArrayAdd(garrRelCabecalho," Código Nome Endereço Cidade UF Fone")
sCidadeAnt is string
dsQry is Data Source
sSql is string = [
SELECT
CLIENTES.CODIGO,
CLIENTES.NOME,
CLIENTES.ENDERECO,
CLIENTES.CIDADE,
CLIENTES.UF,
CLIENTES.TELEFONE
FROM CLIENTES
ORDER BY CLIENTES.CIDADE,CLIENTES.NOME
]
// Impressão
IF HExecuteSQLQuery(dsQry, hQueryDefault, sSql) THEN
ProgBarra(PROGBAR_Barra,HNbRec(dsQry))
FOR ALL dsQry
// Quebra por cidade
IF dsQry.Cidade > sCidadeAnt THEN
ReportPrint(2,CenterString("Cidade " + dsQry.Cidade),1,1,True)
END
ReportPrint(3,...
QtdeX(1) + NumToString(dsQry.Codigo,"7d") + ...
QtdeX(2) + Complete(dsQry.Nome,50) + ...
QtdeX(2) + Complete(dsQry.Endereco,50) + ...
QtdeX(2) + Complete(dsQry.Cidade,30) + ...
QtdeX(2) + dsQry.UF + ...
QtdeX(2) + dsQry.Telefone)
sCidadeAnt = dsQry.Cidade
PROGBAR_Barra..Value ++
END
PROGBAR_Barra..Visible = False
ELSE
Info(HErrorInfo() + CR + sSql)
END
LocalEndReport(COMBO_Destino)
HFreeQuery(dsQry)
BTN_ok..Grayed = False
HourGlass(False)
// Syntax:
//LocalImpressao ()
//
// Parameters:
// None
// Return Value:
// None
//
// For instance:
// Indicate an example.
//
Procedure LocalImpressao()
// Confere se usuário deseja reimprimir o mesmo relatório novamente
IF gbImprimiu THEN
IF NOT YesNo("Você deseja reimprimir este relatório?") THEN
RETURN
END
END
gbImprimiu = True
BTN_ok..Grayed = True
HourGlass()
// Parâmetros do relatório
ReportBegin(COMBO_Destino,COMBO_Impressora,iOrientation_Landscape)
ArrayAdd(garrRelCabecalho," Código Nome Endereço Cidade UF Fone")
sCidadeAnt is string
dsQry is Data Source
sSql is string = [
SELECT
CLIENTES.CODIGO,
CLIENTES.NOME,
CLIENTES.ENDERECO,
CLIENTES.CIDADE,
CLIENTES.UF,
CLIENTES.TELEFONE
FROM CLIENTES
ORDER BY CLIENTES.CIDADE,CLIENTES.NOME
]
// Impressão
IF HExecuteSQLQuery(dsQry, hQueryDefault, sSql) THEN
ProgBarra(PROGBAR_Barra,HNbRec(dsQry))
FOR ALL dsQry
// Quebra por cidade
IF dsQry.Cidade > sCidadeAnt THEN
ReportPrint(2,CenterString("Cidade " + dsQry.Cidade),1,1,True)
END
ReportPrint(3,...
QtdeX(1) + NumToString(dsQry.Codigo,"7d") + ...
QtdeX(2) + Complete(dsQry.Nome,50) + ...
QtdeX(2) + Complete(dsQry.Endereco,50) + ...
QtdeX(2) + Complete(dsQry.Cidade,30) + ...
QtdeX(2) + dsQry.UF + ...
QtdeX(2) + dsQry.Telefone)
sCidadeAnt = dsQry.Cidade
PROGBAR_Barra..Value ++
END
PROGBAR_Barra..Visible = False
ELSE
Info(HErrorInfo() + CR + sSql)
END
LocalEndReport(COMBO_Destino)
HFreeQuery(dsQry)
BTN_ok..Grayed = False
HourGlass(False)
BONS ESTUDOS
NOVOS EXEMPLOS ME ENCAMINHEM!
--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/