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

Responder a