Exibir texto com várias linhas
Vamos melhorar o exemplo anterior. A tabela "Biolife" possui um campo "Notes" que contém uma descrição detalhada de cada peixe. Atualize nosso relatório ao adicionar este campo a ele.
À primeira vista, isso parece fácil – adicionar um objeto "Texto" à banda de dados entre os objetos existentes, conectá-lo ao campo "Notes" e configurar o tamanho do objeto como 8 x 2,5 cm. No entanto, a visualização do relatório não mostra exatamente o que desejamos:
FastReport executou exatamente o que foi instruído a fazer. O campo "Notas" contém um texto com várias linhas de comprimentos variados, porém o objeto "Texto" que exibe as informações deste campo tem um tamanho fixo. É por isso que algumas linhas parecem cortadas. O que pode ser feito a respeito?
É claro que o tamanho do objeto pode ser aumentado ou o tamanho da fonte pode ser reduzido. No entanto, isso pode levar à perda de espaço na página de saída, já que alguns peixes possuem descrições longas, e outros possuem descrições curtas. O FastReport tem algumas propriedades que nos permitem solucionar este problema.
Essas propriedades permitem que uma banda ou um objeto ajustem sua altura automaticamente para criar o espaço necessário para um registro (fileira). Para obter isso, precisamos apenas ativar a propriedade "Esticar", tanto da banda como do objeto "Texto". No entanto, isso não é tudo, já que um objeto "Texto" com texto mais longo deve ser capaz de se estender automaticamente. Para isso precisamos configurar outras propriedades também.
O objeto "Texto" é capaz de definir sua altura e largura automaticamente para criar espaço para seu conteúdo. "AutoWidth" e "EsticarMode" podem ser usado para isso. "AutoWidth" permite que o objeto texto varie sua largura, para que todas as linhas criem espaço sem dividir nenhuma palavra. Este modo é útil quando um objeto possui uma única linha de texto, e quando o aumento de tamanho à direita não afeta outros objetos. A propriedade "Esticar" permite que a altura de um objeto aumente para acomodar o texto, sem alterar a largura do objeto. "Esticar" tem diversos modos que podem ser selecionados no inspetor de objetos:
smDontEsticar – não estender o objeto (padrão)
smActualHeight – estender o objeto para criar espaço para todo o texto
smMaxHeight – estender o objeto para que sua parte inferior alcance a parte inferior da banda no qual estiver colocado. Abordaremos este modo mais adiante
Aqui estamos interessados na propriedade "Esticar" do objeto "Texto". Habilite-a usando o menu de contexto do objeto ou ao configurar "EsticarMode" como smActualHeight. Também habilite a propriedade "Esticar" da banda. Visualize o relatório e certifique-se de que tudo é exibido como esperado.
Como você pode ver, ao criar o relatório, o FastReport preenche os objetos com dados e os estende se "Esticar" for habilitado. Ele então calcula a altura da banda para que cada objeto tenha espaço suficiente. Se a propriedade "Esticar" da banda for desabilitada, este ajuste de altura não é executado e a banda é exibida na altura definida no design. Neste caso, veríamos que objetos com texto mais longo seriam estendidos, mas a banda não o seria, o que levaria à sobreposição do texto, já que a banda seguinte seria exibida imediatamente após a anterior.