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]

Responder a