Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir la imagen de un PaintBox en Rave report (https://www.clubdelphi.com/foros/showthread.php?t=87356)

marcelocarazas 17-12-2014 16:08:05

Imprimir el contenido de un PaintBox en un Rave Report
 
Estimados amigos, tengo un problema necesito imprimir la imagen de un PaintBox en un reporte de RAVE REPORT
espero su ayuda.
Código Delphi [-]
Bitmap.LoadFromFile('imagenes/final.bmp'); // tenemos la direccion de la imagen, pero yo quiero cargar la imagen de un PaintBox
PrintBitmap(0.4, 0.3, 1, 1, Bitmap);

gracias y saludos

marcelocarazas 19-12-2014 14:23:50

Imprimir la imagen de un PaintBox en Rave report
 
Estimados necesito su ayuda tengo un Paint Box y necesito imprimir el contenido del PaintBox en un reporte de rave report

Espero su ayuda

Saludos Marcel Carazas

Casimiro Notevi 19-12-2014 14:58:07

No crees hilos nuevos para seguir con lo mismo, gracias :)

marcelocarazas 19-12-2014 15:55:59

Esta bien, ahora me pueden ayudar necesito solucionar este tema urgente
Gracias

Casimiro Notevi 19-12-2014 16:28:00

necesito solucionar este tema urgente

nlsgarcia 19-12-2014 16:37:43

marcelocarazas,

Cita:

Empezado por marcelocarazas
...necesito imprimir la imagen de un PaintBox en un reporte de RAVE REPORT...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

marcelocarazas 19-12-2014 20:45:40

Imprimir la imagen de un PaintBox en Rave report
 
Gracias por responder Nelson, pero lo que necesito es poder imprimir la imagen de un PaintBox en mi reporte de Rave Report.
Para cargar la imagen al reporte de utiliza la siguiente instruccion
Código Delphi [-]

Bitmap.LoadFromFile('delphi.bmp');
PrintBitmap(3.5,0.3,1,1, Bitmap);

quiero imprimir un codigo QR la cual se genera en un paintBox

Saludos, y perdon por escribir de esa manera pero necesito solucionar el tema.

Gracias

Casimiro Notevi 19-12-2014 20:55:59

goto 5


.


.

nlsgarcia 19-12-2014 21:26:07

marcelocarazas,

Cita:

Empezado por marcelocarazas
...lo que necesito es poder imprimir la imagen de un PaintBox en mi reporte de Rave Report...

Revisa el link : Introduction to Rave Reports - Part I: Code Based Reports, alli hay un ejemplo de impresión de un Bitmap en Rave Report, quizás te sea útil :)

Saludos,

Nelson.

marcelocarazas 19-12-2014 21:35:49

Ya rebice ese link pero lo que busco es imprimir El componente PaintBox que la imagen se genera dinamicamente y imprimirlo en mi reporte

ecfisa 19-12-2014 22:25:53

Hola marcelocarazas.

No había usado Rave Reports, pero basándome en la muy buena documentación que te ha facilitado nlsgarcia, te hice este ejemplo:
Código Delphi [-]
...
implementation

var
  Bitmap: TBitmap = nil;

// 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;

// PaintBox -> Bitmap -> Rave
procedure TForm1.btnPrintClick(Sender: TObject);
begin
  if not Assigned(Bitmap) then
  begin
    Bitmap:= TBitmap.Create;
    Bitmap.Width:= PaintBox1.Canvas.ClipRect.Right;
    Bitmap.Height:= PaintBox1.Canvas.ClipRect.Bottom;
    BitBlt(Bitmap.Canvas.Handle,
           0,
           0,
           Bitmap.Width,
           Bitmap.Height,
           PaintBox1.Canvas.Handle,
           0,
           0,
           SRCCOPY);
     RvSystem1.Execute;
  end;
end;

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


Saludos :)

nlsgarcia 19-12-2014 22:32:38

Daniel,

Cita:

Empezado por ecfisa
...No había usado Rave Reports...hice este ejemplo...

:) ^\||/

Nelson.

marcelocarazas 19-12-2014 22:36:26

Muchas gracias ecfisa, voy a probarlo pero parece que es lo que necesito.

Casimiro Notevi 19-12-2014 22:43:15

No se podrán quejar, además, gratis :)

marcelocarazas 22-12-2014 21:54:49

funciona, pero como haria si el objeto paintbox esta con la propiedad visible esta en false ya que imprime cuando el objeto esta visible

Gracias y saludos

ecfisa 22-12-2014 23:43:39

Hola marcelocarazas
Cita:

Empezado por marcelocarazas (Mensaje 486989)
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 :)


La franja horaria es GMT +2. Ahora son las 16:04:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi