João, deu certo cara ... valeu a todos que me ajudaram. Tiago de Assis Pimenta MSN: <mailto:[EMAIL PROTECTED]> [EMAIL PROTECTED] SKYPE: tiagopimenta_skype GTALK: tiagopimenta
_____ De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao Morais Enviada em: terça-feira, 27 de fevereiro de 2007 23:35 Para: delphi-br@yahoogrupos.com.br Assunto: Re: RES: RES: [delphi-br] Quebra String 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 [As partes desta mensagem que não continham texto foram removidas]