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.