Hola marcelocarazas
Cita:
Empezado por marcelocarazas
funciona, pero como haria si el objeto paintbox esta con la propiedad visible esta en false ya que imprime cuando el objeto esta visible
|
Bueno... Pero supongo que en algún momento estará visible, si no ¿ Como sabría el usuario que es lo que va a imprimir ?
Entonces basta con pasar previamente el contenido del PaintBox al Bitmap (luego da igual si el PaintBox está visible u oculto, lo limpias o lo destruyes).
Código Delphi
[-]
var
Bitmap: TBitmap;
procedure PaintBoxToBitmap(PB: TPaintBox; BM: TBitmap);
begin
BM.Width := PB.Canvas.ClipRect.Right;
BM.Height:= PB.Canvas.ClipRect.Bottom;
BitBlt(BM.Canvas.Handle,
0,
0,
BM.Width,
BM.Height,
PB.Canvas.Handle,
0,
0,
SRCCOPY);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Bitmap:= TBitmap.Create;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
with PaintBox1 do
begin
Canvas.Brush.Style:= bsClear;
Canvas.Brush.Color:= clYellow;
Canvas.Ellipse((Width div 2)-30,(Height div 2)-30,
(Width div 2)+30,(Height div 2)+30);
Canvas.Pen.Color:= clRed;
Canvas.Pen.Width:= 2;
Canvas.Pen.Style:= psSolid;
Canvas.MoveTo(0,0);
Canvas.LineTo(Width,Height);
end;
end;
procedure TForm1.btnPBoxToBmpClick(Sender: TObject);
begin
PaintBoxToBitmap(PaintBox1, Bitmap);
end;
procedure TForm1.btnPrintClick(Sender: TObject);
begin
if not Bitmap.Empty then
RvSystem1.Execute;
end;
procedure TForm1.RvSystem1Print(Sender: TObject);
begin
with TBaseReport(Sender) do
PrintBitmap(1,1,1,1, Bitmap);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Bitmap.Free;
end;
Saludos