Fastreport, con imagenes
#1
Posted 25 October 2011 - 04:49 PM
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.
#2
Posted 25 October 2011 - 04:52 PM
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
#3
Posted 25 October 2011 - 06:21 PM
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.
#4
Posted 26 October 2011 - 07:33 AM
procedure TfrmReportes.frrptReportesBeforePrint(Sender: TfrxReportComponent); begin if Sender.Name = 'LOGO' then begin TfrxPictureView(Sender).Visible := True; TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Imagenes\' + NomArchLogo); end; end;
SaludOS
#5
Posted 26 October 2011 - 08:36 AM
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
procedure TfrmReportes.frrptReportesBeforePrint(Sender: TfrxReportComponent); begin if Sender.Name = 'LOGO' then begin TfrxPictureView(Sender).Visible := True; TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Imagenes\' + NomArchLogo); end; 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.
#6
Posted 26 October 2011 - 08:41 AM
SaludOS
#7
Posted 28 October 2011 - 10:48 AM
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;
procedure imagenOnBeforePrint(Sender: TfrxComponent); var sFile: string; pict: TPicture; begin sFile := <fdCoti."cct_img">; if sFile<>'' then try TfrxPictureView(Sender).Picture.LoadFromFile(sFile); except TfrxPictureView(Sender).Visible := False; end; 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
#8
Posted 28 October 2011 - 11:00 AM
Salud OS
#9
Posted 31 October 2011 - 04:47 PM
procedure imagenOnBeforePrint(Sender: TfrxComponent); var Pict: TfrxPictureView; begin if Sender is TfrxPictureView then if TfrxPictureView(Sender).Name = 'imagen' then begin Pict := TfrxPictureView(Sender); if <fdCoti."cct_img"><>'' then begin Pict.Visible := True; try Pict.Picture.LoadFromFile(<fdCoti."cct_img">); except Pict.Visible := False; end; end else Pict.Visible := False; end; 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....
#10
Posted 31 October 2011 - 04:57 PM
SaludOS
#11
Posted 31 October 2011 - 06:01 PM
Jolinesssss, se me paso amigo, mea culpa,
SaludOS
Nosotros comprendemos ego... la edad, la edad....
Saludox !
#12
Posted 31 October 2011 - 06:13 PM
Jolinesssss, se me paso amigo, mea culpa,
SaludOS
Nosotros comprendemos ego... la edad, la edad....
Saludox !
mmm será motivo de preocupación amigo?
#13
Posted 31 October 2011 - 09:35 PM
Éste es el código que yo uso para imprimir credenciales y que prácticamente es igual al tuyo
Empleado := ModuloReportes.ibqCredencial.FieldByName('IDEmp').AsString; //Aquí obtengo el ID del Empleado if FileExists(ExtractFilePath(Application.ExeName) +'Fotos\'+ Empleado + '.jpg') Then begin If Sender.Name = 'Foto' Then //Agrego la foto al objeto TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +'Fotos\'+ Empleado + '.jpg'); end else begin if Sender.Name = 'Foto' then //Si no tiene foto, se imprime la credencial sin foto, así lo pidieron :) TfrxPictureView(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName) +'Fotos\SinFoto.jpg'); end;
Salud OS
#14
Posted 31 October 2011 - 10:21 PM
Con el código que él público debería de funcionar. (Aprovecho para mejorar un poquito el código).
var Ruta: string; begin //.... Empleado := ModuloReportes.ibqCredencial.FieldByName('IDEmp').AsString; //Aquí obtengo el ID del Empleado Ruta := ExtractFilePath(Application.ExeName) +'Fotos\'; if (Sender is TfrxPictureView) and (Sender.Name = 'Foto') then begin if FileExists(Ruta + Empleado + '.jpg') then TfrxPictureView(Sender).Picture.LoadFromFile(Ruta + Empleado + '.jpg') else TfrxPictureView(Sender).Picture.LoadFromFile(Ruta + 'SinFoto.jpg'); end; //... end;
#15
Posted 01 November 2011 - 05:00 AM
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.
#16
Posted 03 July 2013 - 11:27 AM
procedure TfrmCajas.CopiaCertificadaBeforePrint(Sender: TfrxReportComponent); Var PV : TfrxPictureView; begin PV := TfrxPictureView.Create(Application); PV := (CopiaCertificada.FindObject('Picture1') as TfrxPictureView); PV.Picture.LoadFromFile('C:\img.tif'); 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
#17
Posted 03 July 2013 - 04:52 PM
Jolinesssss, se me paso amigo, mea culpa, ...
Sí, conozco el caso..., y muy de cerca...
#18
Posted 03 July 2013 - 04:53 PM
...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...