Páginas filhas
  • Ajuste automático de tamanho das células nas seções (autosize)

O que é?

O ajuste automático é a tentativa do TReport para realizar a impressão de células em um determinado relatório de forma a fazer com que todos os conteúdos fiquem visíveis.

Portanto, quando utilizadas posições fixas, um relatório que teria informações não sendo exibidas por extrapolar a largura da página de impressão, o recurso de ajuste automático é executado.

Algumas vezes o recurso causa efeitos colaterais nos relatórios, como a visualização do conteúdo de uma célula sobre o conteúdo de outra célula (valores de células diferentes sobrepostos) ou como a troca do modo de impressão da seção para um formato com colunas (três colunas com o par rótulo: conteúdo para todas as células). Para evitar esses efeitos colaterais é sugerido reduzir o número de células sendo impressas na seção.

Como funciona?

O auto ajuste das células só funciona para os casos de impressão no formato padrão, a impressão no formato padrão é quando o rótulo da célula está no topo e os conteúdos estão alinhados verticalmente.

O outro formato de impressão é chamado de colunado/valores em linha, pois são criados espaços verticais que possam abrigar os valores extensos das células e cada célula é impressa como rótulo: conteúdo.

A seguir um exemplo da impressão de seção no formato padrão, onde as células estão organizadas em colunas sequenciais.

A necessidade de aplicação do auto ajuste é identificada de duas maneiras:

  • (1) quando a seção é indicada para realizar auto ajuste ou;
  • (2) quando qualquer célula de uma seção recebe a definição para ser auto ajustada.

Em qualquer situação dos casos mencionados, todas as células da seção serão auto ajustadas, portanto se somente uma célula receber a definição para auto ajuste, todas as demais células daquela mesma seção sofrerão o auto ajuste quando o limite do espaço de impressão disponível for superado.

A execução do auto ajuste é uma transformação dos tamanhos fixos das células para uma proporção do espaço disponível, ou seja, uma célula com tamanho 30 em uma seção com tamanho 4000 e com espaço disponível de impressão de somente 2530, essa célula terá um novo tamanho proporcional calculado assim (30 / 4000) * 2530 = ~19. Originalmente essa célula que tinha tamanho fixo de 30, passa a ter o tamanho de aproximadamente 19 durante a impressão.

A seguir é demonstrado uma situação de impressão com valores simplificados para demonstrar os passos que envolvem a definição do tamanho do espaço de impressão disponível, o espaço disponível para a impressão da seção e os tamanhos para as células nas seções.

A seguir são exibidos rótulos x tamanho para explicar o auto ajuste posteriormente

largura da folha na impressão = 200
margem esquerda = 10
margem direita = 0

// célula = tamanho fixo
célula 1 = 30
célula 2 = 35
célula 3 = 15
célula 4 = 70
célula 5 = 20
célula 6 = 25
célula 7 = 10
total ocupado pela seção = 205

Na impressão sem auto ajuste a posição de início da impressão é:
- célula 1 => posição início 10
- célula 2 => posição início 40
- célula 3 => posição início 75
- célula 4 => posição início 90
- célula 5 => posição início 160
- célula 6 => posição início 180
- célula 7 => posição início 205

Termina na posição 215 está certo pois é o resultado do total da seção (205) + margem esquerda (10).

Acima acontece a demonstração de um relatório quando a impressão não tem nenhuma marcação para ajuste automático, a seguir a tabela de cálculos quando é identificada a necessidade de aplicação de auto ajuste.


tamanho da seção

espaço disponível para a seçãomargem esq.largura página

205

19010200nova posição início (inicial + tamanho)

tamanho
percentual
novo tamanho (percentual * 190)
10
célula 130
14,63%
27,80
37,80
célula 235
17,07%
32,43
70,24
célula 315
7,32%
13,90
84,14
célula 420
9,76%
18,53
102,68
célula 570
34,15%
64,87
167,56
célula 625
12,20%
23,17
190,73
célula 710
4,88%
9,26
200

Os passos acima envolvem descobrir o percentual que a célula ocupa no total da seção e então aplicar este percentual para calcular o tamanho que a célula deve ocupar no espaço disponível para impressão da seção.

Passo 1: tamanho da célula / tamanho da seção = percentual da célula

Passo 2: percentual da célula * espaço disponível para a seção = tamanho proporcional da célula

Passo 3: calcular as novas posições de início para impressão das células.

Estes passos são executados para todas as células da seção em que foi identificada a necessidade de auto ajuste.

Como definir ajuste automático de tamanho (autosize)

Pode ser realizado através do método SetAutoSize nas classes TRSection (usada na construção de seções) ou TRCell (usada na construção de células).

A opção AUTO SIZE nos comandos DEFINE SECTION e DEFINE CELL também pode ser usada para habilitar o ajuste automático.

O padrão desta propriedade é falso, portanto o padrão não é aplicar ajuste automático no tamanho das células.

É possível também realizar a personalização de leiautes de relatórios e definir nessa personalização as propriedades de auto ajuste tanto na seção quanto nas células.

A seguir imagem para a definição da propriedade na seção:

Edição de seção em leiaute de relatório - imagem mostra as opções para a edição incluindo a opção de auto ajuste

A seguir imagem da definição na célula:

Edição das células e propriedades de uma célula na seção - com a indicação da possibilidade de marcar ou desmarcar o auto ajuste.

Aplicação automática de auto ajuste (autosize)

A aplicação automática de auto ajuste acontece quando o espaço disponível para a impressão da seção é menor que o espaço total que a seção precisa ocupar.

Por padrão o sistema irá tentar fazer com que todas as células apareçam no espaço disponível e portanto uma seção que não couber no espaço disponível terá o auto ajuste aplicado independentemente de qualquer marcação para auto ajuste nas células ou seção.

Isso só pode ser avaliado no momento da impressão e portanto não há como avisar ao usuário com antecedência, pois depende das configurações de margem, células, bordas e principalmente o tamanho da folha de papel escolhida para impressão.

Essa aplicação automática do ajuste pode causar um dos cenários mencionados de efeito colateral (veja a imagem no tópico de exemplos a seguir nessa página).

Troca da impressão em linha por impressão por coluna na seção

Esse é outro efeito colateral quando aplicado auto ajuste em uma seção.

Essa troca no formato de impressão acontece pois alguma célula ficou com tamanho percentual menor que 1%, com isso é entendido que na impressão padrão esta célula não ficaria visível e em função disso o formato da impressão é trocado do padrão para colunado/dados em linha.

Um exemplo desse efeito colateral pode ser observado no tópico de exemplos a seguir.

Este modo de impressão é o mesmo quando usado na seção o método TRSection:ForceLineStyle().

Exemplos

Relatório no formato padrão sem incidência de efeito colateral

Exemplo a seguir mostra um trecho de relatório sem efeitos colaterais, com os tamanhos e quantidades corretas de células.

relatório sem efeito colateral - mostra um relatório com a impressão da seção em linha

Relatório no formato padrão com conteúdo truncado

Exemplo a seguir mostra o conteúdo das células truncado, por existir muitas células para a impressão na seção e assim fica impossível não sobrepor o conteúdo de impressão dessas células.

relatório truncado - exemplo de relatório quando acontece de ter ficado o conteúdo sobreposto entre células

Relatório auto ajustado para o formato de coluna/valores em linha

Exemplo a seguir pode ocorrer no caso de uma das células tenha o valor proporcional menor que 1%.

relatório com a seção em coluna - mostra o efeito colateral por um campo com tamanho 0 em uma seção auto ajustada