Estou fazendo relatório com printers no delphi com o código abaixo e preciso quebra a linha do campo obs, pq é muito grande. Desde já agradeço a ajuda.
var
Linha:integer;
Tamanho:integer;
Coluna:integer;
begin
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Printer.Canvas.Pen.Width := 5;
Printer.Canvas.Font.Name := 'Tahoma';
Printer.Canvas.Font.Size := 12;
Linha := 20;
Coluna:= 20;
Tamanho := Printer.Canvas.TextWidth('a');
ZQueryRelTratMedic.First;
while not ZQueryRelTratMedic.Eof do
begin
if Linha = 20 then
begin
Coluna := 100;
Linha := Linha - Printer.Canvas.Font.Height + 75;
Printer.Canvas.TextOut(2000,Linha,'Histórico dos Pet´s');
Linha := Linha - Printer.Canvas.Font.Height + 75 ;
Printer.Canvas.TextOut(Coluna,Linha,'Pet');
Coluna:= Coluna + (Tamanho * 20 );
Printer.Canvas.TextOut(Coluna,Linha,'Tutor');
Coluna:= Coluna + (Tamanho * 20);
Printer.Canvas.TextOut(Coluna,Linha,'Tipo');
Coluna:= Coluna + (Tamanho * 10);
Printer.Canvas.TextOut(Coluna,Linha,'Data');
Coluna:= Coluna + (Tamanho * 15);
Printer.Canvas.TextOut(Coluna,Linha,'Prox. Dose');
Coluna:= Coluna + (Tamanho * 15);
Printer.Canvas.TextOut(Coluna,Linha,'Valor');
Coluna:= Coluna + (Tamanho * 12);
Printer.Canvas.TextOut(Coluna,Linha,'Obs');
Coluna:= Coluna + (Tamanho * 40);
Linha := Linha - Printer.Canvas.Font.Height + 75 ;
End;
Coluna := 100 ;
Printer.Canvas.Font.Size := 8;
Printer.Canvas.TextOut(Coluna,Linha, ZQueryRelTratMedic.FieldByName('Pet').AsString);
Coluna:= Coluna + (Tamanho * 20 );
Printer.Canvas.TextOut(Coluna,Linha, ZQueryRelTratMedic.FieldByName('Tutor').AsString);
Coluna:= Coluna + (Tamanho * 20);
Printer.Canvas.TextOut(Coluna,Linha, ZQueryRelTratMedic.FieldByName('Tipo').AsString);
Coluna:= Coluna + (Tamanho * 10);
Printer.Canvas.TextOut(Coluna,Linha, ZQueryRelTratMedic.FieldByName('DataIni').AsString);
Coluna:= Coluna + (Tamanho * 15);
Printer.Canvas.TextOut(Coluna,Linha, ZQueryRelTratMedic.FieldByName('ProxDose').AsString);
Coluna:= Coluna + (Tamanho * 15);
Printer.Canvas.TextOut(Coluna,Linha, ZQueryRelTratMedic.FieldByName('Valor').AsString);
Coluna:= Coluna + (Tamanho * 12);
Printer.Canvas.TextOut(Coluna,Linha, ZQueryRelTratMedic.FieldByName('Obs').AsString);
Coluna:= Coluna + (Tamanho * 40);
Linha := Linha - Printer.Canvas.Font.Height + 20 ;
ZQueryRelTratMedic.Next;
if ZQueryRelTratMedic.eof then
Begin
Printer.Canvas.Font.Size := 12;
Linha := Linha - Printer.Canvas.Font.Height + 75 ;
Printer.Canvas.TextOut(3500,Linha,'Total do Tratamento no período');
Printer.Canvas.TextOut(5200,Linha, FormatFloat('#,##0.00',VarSoma));
Coluna:= Coluna + (Tamanho * 12);
Linha := Linha - Printer.Canvas.Font.Height + 75 ;
End;
if Linha > Printer.PageHeight-20 then
Begin
Printer.NewPage;
Linha := 20;
end;
end;
Printer.EndDoc;