## Métodos da Biblioteca de Funções – Relatórios Gráficos

##### Objetivo

Demonstrar alguns recursos adicionais que podem ser utilizados através do uso de Fontes Livres, específicos para Relatórios Gráficos.

##### Pré-requisitos

São pré-requisitos para execução dessa função:

Conhecimento da linguagem de programação Progress.

##### Descrição

### Execução da Biblioteca de Funções

A Biblioteca de Funções, responsável por obter os dados do relatório e os dados do layout e transformar no PDF final, é executada automaticamente pelo Data Viewer da seguinte forma:

run dvrt/lib/dvlib.p persistent set h-FunctionLibrary.

Onde:

- dvrt/lib/dvlib.p é o arquivo referente a Biblioteca de Funções.
- h-FunctionLibrary é a variável de referência a Biblioteca de Funções (essa variável será utilizada pelo usuário quando o mesmo quiser executar alguns métodos adicionais em fontes livres).

A seguir serão demonstrados os métodos disponíveis na Biblioteca de Funções que podem ser utilizados a partir do “.P” gerado. Esses métodos estão classificados em duas categorias:

- Métodos utilizados automaticamente pelo Data Viewer.
- Métodos utilizados pelo usuário.

### Métodos utilizados automaticamente pelo Data Viewer

A seguir é apresentada a lista de métodos utilizadas automaticamente pelo Data Viewer. Os métodos serão explicados para um maior entendimento de usuários avançados que utilizem codificação. Todos as chamadas dos métodos abaixo são geradas e executadas automaticamente pelo Data Viewer. Dessa forma, não é recomendado alterar essas execuções geradas.Para cada método será listado o nome do método, os parâmetros necessários, o objetivo e um exemplo de execução.

Método | LoadLayout
Objetivo | Carregar na Biblioteca de Funções qual o layout será utilizado durante a execução do relatório.
Parâmetros | INPUT PARAMETER p-nome-arquivo AS CHAR
Exemplo | run loadLayout in h-FunctionLibrary (input <nome-do-arquivo>).

Método | SetConstant
Objetivo | Carregar na Biblioteca de Funções o valor de cada uma das constantes existentes do editor de Layouts. As constantes devem ser carregadas ANTES da execução do método startPage (listagens) ou writePage (formulários) para que os valores possam ser considerados no resultado final. É possível sobrescrever o valor de uma constante re-executando esse método e passando o código/valor da constante.
Parâmetros | - INPUT PARAMETER p-cod-constante AS CHAR - INPUT PARAMETER p-valor-constante AS CHAR
Exemplo | run setConstant in h-FunctionLibrary (<codigo>, <valor >).

Método | PrintForm
Objetivo | Imprime no PDF todos os objetos do layout que estão assinalados como “Objetos do Formulário”. Esse método é executado apenas para layout do tipo de formulário. Nesse caso, o mesmo é executado quando NÃO está assinalada na interface a opção “Imprimir Somente Dados” (essa opção significa que o usuário estará utilizando formulário pré-impresso).
Parâmetros |
Exemplo | run printForm in h-FunctionLibrary.

Método | SetObject
Objetivo | Envia para a Biblioteca de Funções o valor a ser impresso de cada objeto no determinado grupo/tabela informado. Caso o usuário desejar sobrescrever o valor de um objeto, deve fazer através do uso do método setObjectNewValue.
Parâmetros | - INPUT PARAMETER p-nome-tabela AS CHAR - INPUT PARAMETER p-nome-objeto AS CHAR - INPUT PARAMETER p-valor AS CHAR
Exemplo | run setObject in h-FunctionLibrary (input <tabela|grupo>, input <objeto>, input <valor>).

Método | WritePage
Objetivo | Confirma a geração final de uma página de formulário. Após efetuado o método de writePage, não é mais possível manipular os dados e propriedades dos objetos da página corrente. O parâmetro refere-se se a próxima página será referente a um novo registro (sim) ou será a continuação do registro atual. Exemplo página 2 do Pedido de Compra 100.000
Parâmetros | - INPUT PARAM p-elimina-dados AS LOGICAL
Exemplo | run writePage in h-FunctionLibrary (input <yes/no>).

Método | PageParam
Objetivo | Envia as informações parametrizadas na interface para serem impressas no relatório final, quando a opção “Imprime parâmetros” é selecionada pelo usuário. O número da página compreende os valores: 1 – Seleção 2 – Parâmetros 3 – Impressão
Parâmetros | - INPUT PARAM p-numero-pagina AS INT - INPUT PARAM p-rotulo-objeto AS CHAR - INPUT PARAM p-valo AS CHAR
Exemplo | run pageParam in h-FunctionLibrary (input <numero-pagina>, input <rotulo>, input <valor>).

Método | SaveXML
Objetivo | Responsável por criar o PDF através do .FO gerado anteriormente, conforme o nome de arquivo parametrizado.
Parâmetros | - INPUT PARAMETER p-nome-arquivo AS CHAR
Exemplo | run saveXML in h-FunctionLibrary (input <nome-arquivo-pdf>).

Método | StartPage
Objetivo | Utilizado para definir a cabeçalho e rodapé para o PDF final. Esse método é aplicado apenas para layouts do tipo Listagem. Depois de executado o método startPage não é mais possível manipular as informações do cabeçalho e rodapé (as alterações efetuadas após a execução desse método não terão efeito no relatório final gerado).
Parâmetros | -
Exemplo | run startPage in h-FunctionLibrary.

Método | WriteBody
Objetivo | Confirma a geração final de um registro da tabela informada. Depois de efetuado o método de writeBody, não é mais possível manipular os dados e propriedades dos objetos do registro corrente.
Parâmetros | - INPUT PARAMETER p-nome-tabela AS CHAR
Exemplo | run writeBody in h-FunctionLibrary (input <tabela>).

Método | WriteCalc
Objetivo | Confirma a geração final de um registro da tabela de cálculo informada. Depois de efetuado o método de writeCalc, não é mais possível manipular os dados e propriedades dos objetos do registro corrente.
Parâmetros | - INPUT PARAMETER p-nome-tabela AS CHAR
Exemplo | run writeCalc in h-FunctionLibrary (input <tabela-calculo>).

### Métodos utilizados pelo Usuário

Segue abaixo a lista de métodos que podem ser utilizados pelo usuário, permitindo manipular os dados e propriedades dos objetos. Os métodos serão explicados para um maior entendimento de usuários avançados que utilizem codificação. Para cada método será listado o nome do método, os parâmetros necessários, o objetivo e um exemplo de execução.

Método | SetColor
Objetivo | Permite ao usuário alterar a cor do objeto de uma tabela/grupo em tempo de execução do relatório. Dessa forma, é possível através de codificação imprimir um determinado valor de objeto de uma cor X caso atenda uma condição e de uma cor Z caso a condição não seja atendida. No parâmetro referente à cor podem ser utilizados: black, silver, gray, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, acqa. Hexadecimal - Exemplo: #FFFF00 Formato RGB - Exemplo: rgb(255,0,0)
Parâmetros | - INPUT PARAMETER p-nome-tabela AS CHAR - INPUT PARAMETER p-nome-objeto AS CHAR - INPUT PARAMETER p-cor AS CHAR
Exemplo | run setColor in h-FunctionLibrary (<tabela|grupo >,<objeto>,<cor>).

Método | SetBackgroundColor
Objetivo | Permite ao usuário alterar a cor de fundo do objeto de uma tabela/grupo em tempo de execução do relatório. Dessa forma, é possível através de codificação imprimir um determinado valor de objeto de uma cor X caso atenda uma condição e de uma cor Z caso a condição não seja atendida. No parâmetro referente à cor podem ser utilizados: black, silver, gray, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, acqa. Hexadecimal - Exemplo: #FFFF00 Formato RGB - Exemplo: rgb(255,0,0)
Parâmetros: | - INPUT PARAMETER p-nome-tabela AS CHAR - INPUT PARAMETER p-nome-objeto AS CHAR - INPUT PARAMETER p-cor AS CHAR
Exemplo | run setBackgroundColor in h-FunctionLibrary (<tabela|grupo >,<objeto>,<cor>).

Método | SetInvisible
Objetivo | Permite ao usuário ocultar o valor de um campo calculado ou de campos do Banco de Dados.
Parâmetros | - INPUT PARAMETER p-nome-tabela AS CHAR - INPUT PARAMETER p-nome-objeto AS CHAR - INPUT PARAMETER p-valor AS CHAR
Exemplo | rum setInvisible in h-Functionalibrary (<tabela|grupo >,<objeto>,<yes|no>).

Método | SetObjectNewValue
Objetivo | Permite ao usuário alterar o valor do objeto de uma tabela/grupo em tempo de execução do relatório. O uso do método setObjectNewValue deve ser efetuado ANTES dos métodos writePage, writeBody e writeCalc, através de fontes livres.
Parâmetros: | - INPUT PARAMETER p-nome-tabela AS CHAR - INPUT PARAMETER p-nome-objeto AS CHAR - INPUT PARAMETER p-valor AS CHAR
Exemplo | run setObjectNewValue in h-FunctionLibrary (<tabela|grupo>,<objeto>,<valor>).

| Topo |