Ver Mensaje Individual
  #16  
Antiguo 22-12-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola marcelocarazas
Cita:
Empezado por marcelocarazas Ver Mensaje
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;

// Pasa el contenido del PaintBox al Bitmap
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;

// OnCreate Form1
procedure TForm1.FormCreate(Sender: TObject);
begin
  Bitmap:= TBitmap.Create;
end;

// Hacer un dibujo
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;

// Pasar PaintBox a Bitmap cuando esté visible,
// luego puedes hacer lo que desees con el primero
procedure TForm1.btnPBoxToBmpClick(Sender: TObject);
begin
  PaintBoxToBitmap(PaintBox1, Bitmap);
end;

// Bitmap -> Rave
procedure TForm1.btnPrintClick(Sender: TObject);
begin
  if not Bitmap.Empty then
    RvSystem1.Execute;
end;

// TRvSystem OnPrint
procedure TForm1.RvSystem1Print(Sender: TObject);
begin
  with TBaseReport(Sender) do
    PrintBitmap(1,1,1,1, Bitmap);
end;

// Liberar memoria
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Bitmap.Free;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-12-2014 a las 00:21:22.
Responder Con Cita