Ir al contenido


Foto

Fastreport, con imagenes


  • Por favor identifícate para responder
17 respuestas en este tema

#1 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 25 octubre 2011 - 04:49

Saludos amigos, una sugerencia para trabajar con fastreport 5, lo que requiero, es, tengo un documento que tiene un detalle, en este detalle presento unos registros de productos, pero quiero insertar una foto diminuta en un lado de cada registro.

Para la imagen, tengo un campo en mi base de datos, donde almaceno la ruta de la imagen y esta es la que quiero que aparezca en la imagen.

Saludos y gracisa de antemano. (y) (y)
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 25 octubre 2011 - 04:52

Hola amigo,

Hasta donde recuerdo necesitas pasarlo desde tu programa haciendo una búsqueda del objeto imagen de FastReport, por la noche te paso el código que he utilizado para esos menesteres :)

Salud OS
  • 0

#3 angelo2007

angelo2007

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 25 octubre 2011 - 06:21

lo que yo hago es poner una la imagen en la blase de datos en la misma tabla y registro.

algo asi

id  nombre producto  descripcion      prodimagen

el campo lo pongo como blobtype subtipo binary  a 100 de tamaño
y asi solo pongo un dbimage dentro del reporte y lo enlazo a el registo prodimagen. y ya.




  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 26 octubre 2011 - 07:33

Que tal, lo prometido es deuda pero desgraciadamente el foro estuvo fuera del aire ayer y ya no publiqué el código.



delphi
  1. procedure TfrmReportes.frrptReportesBeforePrint(Sender: TfrxReportComponent);
  2. begin
  3.   if Sender.Name = 'LOGO' then
  4.   begin
  5.     TfrxPictureView(Sender).Visible := True;
  6.     TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +
  7.                                               'Imagenes\' + NomArchLogo);
  8.   end;
  9. end;



SaludOS

  • 0

#5 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 26 octubre 2011 - 08:36

lo que yo hago es poner una la imagen en la blase de datos en la misma tabla y registro.

algo asi

id  nombre producto  descripcion      prodimagen

el campo lo pongo como blobtype subtipo binary  a 100 de tamaño
y asi solo pongo un dbimage dentro del reporte y lo enlazo a el registo prodimagen. y ya.


Gracias amigo angelo2007, si efectivamente, es una solución, el problema con eso que tu base de datos crecería desmesuradamente y bueno luego los clientes no te proporcionan ni los requerimientos básicos.

Que tal, lo prometido es deuda pero desgraciadamente el foro estuvo fuera del aire ayer y ya no publiqué el código.



delphi
  1. procedure TfrmReportes.frrptReportesBeforePrint(Sender: TfrxReportComponent);
  2. begin
  3.   if Sender.Name = 'LOGO' then
  4.   begin
  5.     TfrxPictureView(Sender).Visible := True;
  6.     TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +
  7.                                                 'Imagenes\' + NomArchLogo);
  8.   end;
  9. end;



SaludOS


Amigo egostar, si efectivamente, quise contestar tu post y nomás no pude, pero bueno ya estamos en linea nuevamente, ok este código donde lo pongo por que recuerda que esta en el detalle y necesito una imagen por cada registro que aparezca en el reporte.

Por otro lado, te comentaba que tengo un proyecto interesante en puerta, si tienes oportunidad me gustaría invitarte a formar parte de este proyecto, ya le comente a Edgar y a Gabi, ya que el sistema lo requieren para enero.

Ya tu me dices si puedes y ver cuando nos podemos reunir para comentarlo y aprovechar para saludarnos.

y nuevamente gracias por tus prontas respuesta. (y) (y) (y) (y)


  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 26 octubre 2011 - 08:41

Pues es en el evento BeforePrint de tu componente de fastreport, y lo interesante es que ese código te sirve como de foprma dinámica, necesito asegurarme porque te puse lo del logo, pero en el programa que lo tengo se imprimen fotos de empleados que imagino es similar a lo que tu requieres y me parece que es lo mismo, lastimosamente, ese código lo tengo en casa, así que si no sucede otra cosa y el host ya se pone las pilas te confirmo en la noche.

SaludOS


  • 0

#7 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 28 octubre 2011 - 10:48

Pues es en el evento BeforePrint de tu componente de fastreport, y lo interesante es que ese código te sirve como de foprma dinámica, necesito asegurarme porque te puse lo del logo, pero en el programa que lo tengo se imprimen fotos de empleados que imagino es similar a lo que tu requieres y me parece que es lo mismo, lastimosamente, ese código lo tengo en casa, así que si no sucede otra cosa y el host ya se pone las pilas te confirmo en la noche.

SaludOS



y como dice la canción.... "...y me quede esperando...", jejeje

mira amigo hice lo siguiente;



delphi
  1. procedure imagenOnBeforePrint(Sender: TfrxComponent);
  2. var
  3.   sFile: string;
  4.   pict: TPicture;       
  5. begin
  6.   sFile := <fdCoti."cct_img">;
  7.          
  8.   if sFile<>'' then                                   
  9.     try               
  10.       TfrxPictureView(Sender).Picture.LoadFromFile(sFile);
  11.     except
  12.       TfrxPictureView(Sender).Visible := False;                                                     
  13.     end;           
  14. end;



Esto lo puse en BeforePrint de la imagen, y el primer registro me pone la imagen sin bronca pero el siguiente registro me marca un error como si no estuviera creado el objeto.
Alguna sugerencia, observación o correción?  *-)

Nota: como puedes ver la ruta de la imagen la obtengo de una base de datos y por consiguiente pueden ser varios registros que si traigan imagen y otros nop.

de antemano gracias




  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 octubre 2011 - 11:00

Caramba!!!, se me paso este asunto, luego te publico la solucion.

Salud OS
  • 0

#9 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 31 octubre 2011 - 04:47

Saludos, amigos, pues de pues de tanto intentar e intentar, esta la pronta solución que encontre para el problema planteado, gracias a egostar, por el empujoncito, y pues aquí les comparto la solución encontrada, me funciona (Delphi 2007 + FastReports 4.5)



delphi
  1. procedure imagenOnBeforePrint(Sender: TfrxComponent);
  2. var
  3.   Pict: TfrxPictureView;
  4. begin
  5.   if Sender is TfrxPictureView then
  6.     if TfrxPictureView(Sender).Name = 'imagen' then begin
  7.       Pict := TfrxPictureView(Sender);
  8.       if <fdCoti."cct_img"><>'' then begin
  9.         Pict.Visible := True;
  10.         try                     
  11.           Pict.Picture.LoadFromFile(<fdCoti."cct_img">);
  12.         except
  13.           Pict.Visible := False;
  14.         end;                                           
  15.       end else
  16.         Pict.Visible := False;                                                                         
  17.     end;
  18.  
  19. end



Aqui tengo un problemilla, que tuve que solucionar con el "if <fdCoti."cct_img"><>''" ya que no pude correr el "FileExist".

Pero bueno ahi esta la solución para cuando quieren mostrar una imagn en un listado y que esta imagen este en su DD y la ruta se pase por base de datos.

Gracias....
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 31 octubre 2011 - 04:57

Jolinesssss, se me paso amigo, mea culpa, :embarrassed:


SaludOS
  • 0

#11 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 31 octubre 2011 - 06:01

Jolinesssss, se me paso amigo, mea culpa, 


SaludOS


Nosotros comprendemos ego... la edad, la edad....  :s

*-) :D :D

Saludox ! :)
  • 0

#12 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 31 octubre 2011 - 06:13


Jolinesssss, se me paso amigo, mea culpa, 


SaludOS


Nosotros comprendemos ego... la edad, la edad.... 

   

Saludox !



mmm será motivo de preocupación amigo?  *-)
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 31 octubre 2011 - 09:35

Porque no pudiste ejecutar el fileexists() amigo,

Éste es el código que yo uso para imprimir credenciales y que prácticamente es igual al tuyo



delphi
  1.     Empleado := ModuloReportes.ibqCredencial.FieldByName('IDEmp').AsString; //Aquí obtengo el ID del Empleado
  2.     if FileExists(ExtractFilePath(Application.ExeName) +'Fotos\'+ Empleado + '.jpg') Then
  3.     begin
  4.         If Sender.Name = 'Foto' Then //Agrego la foto al objeto
  5.           TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +'Fotos\'+ Empleado + '.jpg');
  6.     end
  7.     else begin
  8.         if Sender.Name = 'Foto' then //Si no tiene foto, se imprime la credencial sin foto, así lo pidieron :)
  9.           TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +'Fotos\SinFoto.jpg');
  10.     end;



Salud OS
  • 0

#14 bigleaguer

bigleaguer

    Advanced Member

  • Miembros
  • PipPipPip
  • 66 mensajes

Escrito 31 octubre 2011 - 10:21

Por que no puedes usar el FileExists como comenta Egostar?
Con el código que él público debería de funcionar. (Aprovecho para mejorar un poquito el código).





delphi
  1. var
  2.   Ruta: string;
  3. begin
  4.   //....
  5.   Empleado := ModuloReportes.ibqCredencial.FieldByName('IDEmp').AsString; //Aquí obtengo el ID del Empleado
  6.   Ruta := ExtractFilePath(Application.ExeName) +'Fotos\';
  7.   if (Sender is TfrxPictureView) and (Sender.Name = 'Foto') then
  8.   begin
  9.     if FileExists(Ruta + Empleado + '.jpg') then
  10.       TfrxPictureView(Sender).Picture.LoadFromFile(Ruta + Empleado + '.jpg')
  11.     else
  12.       TfrxPictureView(Sender).Picture.LoadFromFile(Ruta + 'SinFoto.jpg');
  13.   end; 
  14.   //...
  15. end;


  • 0

#15 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 01 noviembre 2011 - 05:00

Hola.

Yo lo que hago simplemente es poner la imagen en un campo InternalCalc (o Calculated) del Dataset que alimenta el Report.

De esta forma puedo poner en el Report una Image normal y corriente, enlazada al campo, sin necesidad de programar nada más.

Saludos.
  • 0

#16 hdavid74

hdavid74

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 03 julio 2013 - 11:27

Que tal a todos tengo este codigo para imprimir una imagen en FastReport



delphi
  1. procedure TfrmCajas.CopiaCertificadaBeforePrint(Sender: TfrxReportComponent);
  2. Var
  3.   PV : TfrxPictureView;
  4. begin
  5.   PV := TfrxPictureView.Create(Application);
  6.   PV := (CopiaCertificada.FindObject('Picture1') as TfrxPictureView);
  7.   PV.Picture.LoadFromFile('C:\img.tif');
  8. end;


el problema que tengo es que cuando pongo un C:\img.tif no marca error ni nada solo no imprime la imagen que esta leyendo mas sin embargo si le pongo c:\img.jpg (que es otra imagen a la que quiero poner) si la imprime y no se porque es esto
  • 0

#17 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 03 julio 2013 - 04:52

Jolinesssss, se me paso amigo, mea culpa, :embarrassed:...


Sí, conozco el caso..., y muy de cerca...
  • 0

#18 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 03 julio 2013 - 04:53

...Yo lo que hago simplemente es poner la imagen en un campo InternalCalc (o Calculated) del Dataset que alimenta el Report...


¡Los campos calculados son la onda! No recuerdo cómo era la vida antes de descubrirlos y aplicarlos...
  • 0




IP.Board spam blocked by CleanTalk.