Totalizador páginas TReport

Bom dia pessoal,

No cabeçalho do TReport, preciso colocar a página atual e total de paginas (Ex. Página 05 de 25).

temos jeito de fazer isto mediante Bloco de código por exemplo?

https://centraldeatendimento.totvs.com/hc/pt-br/articles/360027934371-MP-ADVPL-Totalizador-paginas-Treport-cabe%C3%A7alho-

Obrigado.

Boa Tarde Nahim,

A um bom tempo atrás já tive esta situação de ter que colocar a página total da impressão, porém o modo que encontrei dobraria o tempo de impressão do relatório, o que fica inviável e esquisito, já para adicionar o número da página atual eu fiz o seguinte, criei uma variável private chamada npage iniciando com zero, utilizo a rotina SetCustomText logo após init da seção para criar o cabeçalho customizado:https://tdn.totvs.com/display/public/PROT/SetCustomText

Exemplo: Chamo a função: oReport:SetCustomText({||u_CriaCab(cPedido)})

Dentro da função tenho o seguinte:


If nPage > 0

    nPage++

else

    nPage := 1

EndIf

Desta forma, toda vez que ele vai criar o cabeçalho na página ele atualiza o número da página que ele está criando.

Exemplo de criação do cabeçalho simplificado:


user function CriaCab(cPedido)
local _linha1
local _ArrayCab, _cVar1

If nPage > 0

    nPage++
else
    nPage := 1
EndIf

_cVar1 := "LISTA DE EMBARQUE   " + "               Pag.:"+cValtoChar(nPage) 

_linha1 := _cVar1


_ArrayCab := {_linha1}


return _ArrayCab

Talvez tenha uma forma mais simples, ou outro esquema, mas este me atendeu na época!

Obrigado Douglas, mais eu preciso ter o total de página obrigatoriamente, mesmo que doubre o tempo

Na teoria o que você terá que fazer é uma falsa impressão, gerar o arquivo, ver qual o npage final, guardar ele , e aí excluir o arquivo gerado e então gerar o impresso, como se a chamada do relatório tive-se uma fila, primeiro faz isso para um e depois realmente chama a impressão.