Tiago de Assis Pimenta wrote: > [snip] > write(impressora,format('%-40s',[wraptext(qrhistserv.fieldbyname('servico'). > asstring,39)])); > > write(impressora,format('%-10s',[qrhistserv.fieldbyname('qtde').value])); > > write(impressora,format('%-18s',[formatfloat('##0.00',qrhistserv.fieldbyname > ('precoun').value)])); > > write(impressora,format('%-10s',[formatfloat('##0.00',qrhistserv.fieldbyname > ('total').value)])); > writeln(impressora); > qrhistserv.next; > end; > > Só que acho que esta acontecendo o seguinte. > > Como a string tem mais de 40 caracteres ele dá pau na formatação. Acho que é > isso.
Você precisa pegar uma linha por vez. Use o StringList para ajudar: VStringList := TStringList.Create; try VStringList.Text := WrapText('texto', VColunas); VStringList.Count == total de linhas VStringList[0] == primeira linha VStringList[1] == segunda linha //etc. finally VStringList.Free; end; Depois você monta o corpo do relatório, levando em conta que você precisará abrir linhas caso o .Count seja maior do que um. Ex.: Mensagem Qtd Unit Total ============================== ===== ======== ========= Mensagem que não cabe em uma 2 10,00 20,00 única linha Mensagem que cabe em uma linha 150 2,00 300,00 -- João Morais