Bandas filho
Pode haver um problema quando um campo em um relatório tipo rótulo possui conteúdo de comprimento variável. Para simular isso em nosso exemplo, vamos reduzir a largura do objeto Bio."Common Name" para 2,5 cm e habilitar a propriedade "Esticar" neste objeto e também na banda "Dados de 1o. Nível". Habilite todas as linhas da borda para todos os objetos para que os efeitos da função de extensão sejam claramente visíveis. O design agora gera um relatório como este:
Aqui o primeiro objeto de campo Bio."Common Name" contém muito texto e é estendido por duas linhas. Isso causa o deslocamento para baixo do objeto de campo Bio."Length (cm)", localizado abaixo do primeiro. Isso acontece porque todos os objetos possuem a propriedade ShiftMode
configurada como smAlways como padrão, o que significa que eles são deslocados para baixo se houver um objeto extensível (um objeto "Texto" com a propriedade "Esticar" habilitada) sobre eles. A distância do deslocamento depende de quanto o objeto acima é estendido.
Mas não desejamos que isso aconteça com nosso rótulo. Nós queremos que o objeto "Comprimento, cm:" também seja deslocado igualmente. Isso pode ser obtido ao usar uma banda de FastReport especial chamada de banda "Filho". Uma banda "Filho" é vinculada a (e exibida após) uma banda pai. Adicione uma banda "Filho" ao design e arraste os dois objetos "Texto" para dentro dela, conforme é mostrado aqui:
Vincule a banda DadosMestre à banda Filho ao configurar sua propriedade "Child" como "Child1" no inspetor de objetos. Agora, cada vez que a banda DadosMestre for impressa, a banda Filho é impressa imediatamente depois dela:
O título "Comprimento, cm:" agora está alinhado corretamente com seu campo de valor "50". Para prevenir que uma banda filho seja movida para a próxima página se não houver espaço livre suficiente na página (e se tornando 'órfã' de sua banda pai), habilite a propriedade KeepChild
da banda pai no inspetor de objetos.