Impressão com TPrinter
Olá pessoal,
estopu imprimindo um .bmp e depois o conteudo de um RichEdit,
usando o TPrinter, o problema é se eu altero a fonte de determinada parte do
conteudo do RichEdit, na hora de
imprimir sai tudo com a mesma fonte, ou seja preciso imprimir com
a fonte igual está no RichEdit,
segue abaixo a rotina de impresão,
desde já agradeço,
Procedure TMainForm.PrintDoc(Texto: TRichEdit; Titulo: String);
var
ScaleX, ScaleY: Integer;
R: TRect;
i, e, altura : Integer;
sMemo : String;
begin
Printer.BeginDoc;
with Printer do
try
Title := Titulo;
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(Image1.Left * ScaleX, Image1.Top, (Image1.Picture.Width *
ScaleX) + (Image1.Left * ScaleX), (Image1.Picture.Height * ScaleY) +
Image1.Top);
Canvas.StretchDraw(R, Image1.Picture.Graphic);
Altura := Image1.Picture.Height * ScaleY;
With Canvas do
begin
e := 2; //Imprimir 2 linhas abixo da imagem.
for i := 0 to Texto.Lines.Count - 1 do
begin
e := e+1;
sMemo := Texto.Lines[I];
TextOut(1, (e*(TextHeight(sMemo))) + Altura, sMemo);
end;
end;
finally
EndDoc;
end;
end;
estopu imprimindo um .bmp e depois o conteudo de um RichEdit,
usando o TPrinter, o problema é se eu altero a fonte de determinada parte do
conteudo do RichEdit, na hora de
imprimir sai tudo com a mesma fonte, ou seja preciso imprimir com
a fonte igual está no RichEdit,
segue abaixo a rotina de impresão,
desde já agradeço,
Procedure TMainForm.PrintDoc(Texto: TRichEdit; Titulo: String);
var
ScaleX, ScaleY: Integer;
R: TRect;
i, e, altura : Integer;
sMemo : String;
begin
Printer.BeginDoc;
with Printer do
try
Title := Titulo;
ScaleX := GetDeviceCaps(Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
R := Rect(Image1.Left * ScaleX, Image1.Top, (Image1.Picture.Width *
ScaleX) + (Image1.Left * ScaleX), (Image1.Picture.Height * ScaleY) +
Image1.Top);
Canvas.StretchDraw(R, Image1.Picture.Graphic);
Altura := Image1.Picture.Height * ScaleY;
With Canvas do
begin
e := 2; //Imprimir 2 linhas abixo da imagem.
for i := 0 to Texto.Lines.Count - 1 do
begin
e := e+1;
sMemo := Texto.Lines[I];
TextOut(1, (e*(TextHeight(sMemo))) + Altura, sMemo);
end;
end;
finally
EndDoc;
end;
end;
Anonymous
Curtidas 0
Respostas
Pinetlux
06/02/2003
Sua dúvida é bastante comum, e não sei como ninguém respondeu até agora.
Pelo que me parece, você está jogando cada linha do seu RichEdit dentro de uma string. Ao fazer isto, você perde a formatação.
sMemo := Texto.Lines[I]; // não aconselhado
Utilize o método Print encapsulado no componente RichEdit e mande o conteúdo todo de uma vez para a impressora:
RichText1.Print(varTituloDocumento);
Se seu BMP é um tipo de cabeçalho ou marca dágua, verifique a possibilidade de manter papeis já timbrados para impressão.
Espero que funcione.
Pelo que me parece, você está jogando cada linha do seu RichEdit dentro de uma string. Ao fazer isto, você perde a formatação.
sMemo := Texto.Lines[I]; // não aconselhado
Utilize o método Print encapsulado no componente RichEdit e mande o conteúdo todo de uma vez para a impressora:
RichText1.Print(varTituloDocumento);
Se seu BMP é um tipo de cabeçalho ou marca dágua, verifique a possibilidade de manter papeis já timbrados para impressão.
Espero que funcione.
GOSTEI 0