Fórum Impressão com TPrinter #133351
06/02/2003
0
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
Curtir tópico
+ 0
Responder
Posts
08/04/2005
Pinetlux
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)