No artigo de hoje, iremos demonstrar em como abrir arquivos de relatórios já gerados com a extensão prt no Protheus.
Às vezes, podemos ter a necessidade de algum usuário falar que precisava abrir um relatório que estava gerado no Protheus, para ele comparar com alguma versão antiga.
Se o relatório foi gerado via TReport (ou até em algumas funções antigas como o SetPrint), fica um arquivo na Protheus Data com a extensão prt, conforme print abaixo:
E como podemos fazer para abrir esse arquivo? Pois bem, existem duas formas, uma usando a função PrinterPreview e a segunda usando a classe TPageView. Abaixo um print de exemplo de como fica a visualização.
Agora, vamos demonstrar em como utilizar essas duas Formas.
Abrindo via PrinterPreview
Dessa primeira maneira, nós abrimos o arquivo prt utilizando a antiga classe TMSPrinter e depois acionamos a função PrinterPreview passando o nosso objeto instanciado.
A vantagem desse aqui, é que já vem atalhos configurados como zoom das páginas. E com as opções de imprimir.
//Bibliotecas
#Include 'TOTVS.ch'
/*/{Protheus.doc} zTstPrt
Função teste da TPageView para abrir arquivo prt já gerado
@author Atilio
@since 23/01/2023
@version 1.0
/*/
User Function zTstPrt()
Local aArea := FWGetArea()
Local oDlgRelat
Local cArqRelat := ""
Local oPrinter
Local oTPageView
Local aTamanho := MsAdvSize()
Local nJanLarg := aTamanho[5]
Local nJanAltu := aTamanho[6]
Local lCentered := .T.
//Definindo o arquivo que será aberto
cArqRelat := "\spool\matr680.prt"
//Criando um objeto de impressão e setando o arquivo
oPrinter := TMSPrinter():New()
oPrinter:SetFile(cArqRelat,.F.)
oPrinter:SetPortrait()
oPrinter:SetPaperSize(9)
//Exibe o relatório em tela
PrinterPreview(oPrinter)
FWRestArea(aArea)
Return
Abrindo via TPageView
Dessa segunda forma, nós também abrimos o arquivo prt utilizando a TMSPrinter, só que temos que criar uma Dialog, instanciar um TPageView para daí sim abrir o objeto do nosso relatório.
Nesse caso aqui, o controle é mais manual, para poder criar atalhos, opção de imprimir e tudo mais.
//Bibliotecas
#Include 'TOTVS.ch'
/*/{Protheus.doc} zTstPrt
Função teste da TPageView para abrir arquivo prt já gerado
@author Atilio
@since 23/01/2023
@version 1.0
/*/
User Function zTstPrt()
Local aArea := FWGetArea()
Local oDlgRelat
Local cArqRelat := ""
Local oPrinter
Local oTPageView
Local aTamanho := MsAdvSize()
Local nJanLarg := aTamanho[5]
Local nJanAltu := aTamanho[6]
Local lCentered := .T.
//Definindo o arquivo que será aberto
cArqRelat := "\spool\matr680.prt"
//Criando um objeto de impressão e setando o arquivo
oPrinter := TMSPrinter():New()
oPrinter:SetFile(cArqRelat,.F.)
oPrinter:SetPortrait()
oPrinter:SetPaperSize(9)
//Criando a dialog
oDlgRelat := TDialog():New(0, 0, nJanAltu, nJanLarg, "Teste de TPageView", , , , , CLR_BLACK, RGB(250, 250, 250), , , .T.)
//Criando o TPageView
oTPageView := TPageView():New(0, 0, nJanLarg, nJanAltu, oPrinter, oDlgRelat, oPrinter:nPageWidth+200, oPrinter:nPageHeight )
oTPageView:bLClicked:= {|| Iif(oTPageView:nZoom < 200, oTPageView:nZoom += 25,)}
oTPageView:bRClicked:= {|| Iif(oTPageView:nZoom > 25, oTPageView:nZoom -= 25,)}
oTPageView:Align:= CONTROL_ALIGN_ALLCLIENT
oTPageView:nZoom := 150
oDlgRelat:Activate(, , , lCentered, {|| .T.}, , )
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.

