PDA

Ver la Versión Completa : Cargar foto en QReport en tiempo ejecución


mrmanuel
28-11-2005, 10:44:35
Hola nuevamente.

¿Cómo puede cargar una imagen en un QReport en tiempo de ejecución?

Lo estoy haceiendo de la siguiente manera y me da error.

Foto.Picture.LoadfromFile (ruta + nom_fichero).

Así es como lo hago con una foto normal en un form.

Gracias

fidel
28-11-2005, 20:58:45
Hola:

Esto a mi me funciona

QRImage1.Picture.LoadFromFile('Imagen.jpg');

El nombre de la imagen entre comillas y comprueba que Foto es un TQRImage (a veces se nos cruzan los cables y ponemos un TImage en lugar de un TQRImage).

Un saludo

maeyanes
28-11-2005, 21:00:56
Hola nuevamente.

¿Cómo puede cargar una imagen en un QReport en tiempo de ejecución?

Lo estoy haceiendo de la siguiente manera y me da error.

Foto.Picture.LoadfromFile (ruta + nom_fichero).

Así es como lo hago con una foto normal en un form.

Gracias
Y específicamente, cual es el error que te da?

mrmanuel
29-11-2005, 17:32:51
Hola,

Respondiendo a FIDEL, si tengo un TQRImage. En tiempo de diseño, le inserté la foto y me la imprime perfectamente, es en tiempo de ejecución cuando le digo que me cargue cualquier foto, incluso la que le asigné en diseño, y me da el error correspondiente.

Y en resouesta a maeyanes, el error es de acceso a memoria: "raised exception class EAccessViolation" con el mensaje: "Access violation at address 0059..... in module".

Gracias

maeyanes
30-11-2005, 18:29:55
El error que te da, es por que al momento de hacer la llamada tal vez el componente TQRImage no está creado.

Sería bueno saber desde donde estas haciendo Foto.Picture.LoadFromFile(...) y bajo que condiciones.



Saludos...

mrmanuel
01-12-2005, 11:00:18
Primeramente creo el Form q contiene el QReport.
Una vez creado, le paso los datos por parámetro y mediante una funcio, los coloco en su casilla correspondiente, y por ultimo le digo que cargue la imagen. En ese momento "casca", porque no me deja imprmirlo.

Lo he parcheado con una excepcion, para poder imprimir los datos, pero la imagen se queda en blanco.

gracias

mrmanuel
09-12-2005, 18:23:01
hola nuevamente

concretamente uso:
TQuickReport,
TQrBand, y sobre el inserto los TQRLabels y los TQRImage.

he porbado a cargar el directorio donde está la foto (con chdir) y cargar la foto, sin ruta ni dada.

Tambien he probado a meterle la feto a pelo, sin usar varibles y sigue fallando.

gracias.

Paoti
09-12-2005, 21:22:05
Ojala te sirva lo que te voy a comentar mrmanuel.


Ya que tuve ese problema hace mucho mucho tiempo :rolleyes:


Agrega al uses de tu la unidad: jpeg


Declara una variable así:
jp : TJpegImage;



y escribe este código:
TFrmRep.DetailBand1BeforePrint


jp := TJpegImage.Create;
jp.LoadFromFile('c:\foto.jpg');
qmyImg.Picture.Assign(jp);
FreeAndNil(jp);




qmyIMg es el qrImage.




Espero te sriva, No tengo Delphi instalado en este momento y estoy viendo un .Pas anterior.


NaCl-U2

mrmanuel
19-12-2005, 16:54:08
Sigue dando el mismo error.

:(

Gracias. de todas formas.

Lepe
19-12-2005, 18:39:00
Espero que alguno de estos puntos te ayuden:

- Estas usando una base de datos, o ¿usas el evento OnNeedData para alimentar el informe?

- La foto es jpg, bmp, ¿?

- ¿La ruta contiene espacios en blanco?, Si es así, tendrás que darle la ruta entre comillas dobles.

Foto.Picture.LoadfromFile('__"c:\archivo de programas\foto1.bmp"__');

He puesto guiones bajos ___ para separar un poco las comillas dobles de la comilla simple de delphi. Por supuesto los guiones bajos tendrás que quitarlos.


Una vez creado, le paso los datos por parámetro y mediante una funcio, los coloco en su casilla correspondiente

Sería bueno poner puntos de ruptura (BreakPoints) al inicio de esa función y ver paso a paso en qué instrucción da el error. Si no has encontrado el error, pon esa función en el foro, por si vemos algo "raro".

saludos

mrmanuel
23-12-2005, 12:46:22
Hola.
Respondiendo a LEPE.

LEPE: - Estas usando una base de datos, o ¿usas el evento OnNeedData para alimentar el informe?

Resp: Estoy usando un vlbe local que lee los datos de un fichero ini. Tambien lo ha intentado metiendolos a pelo y usando un TEdit.

-------

LEPE: - La foto es jpg, bmp, ¿?

Resp: He probado los 2 tipos de foto, tanto BMP como JPG.

-------

LEPE: - ¿La ruta contiene espacios en blanco?, Si es así, tendrás que darle la ruta entre comillas dobles.

Resp: La ruta la tomo del sistema, aunque tambien se la he metido a pelo. y no contiene ningun espacio en blanco.

-------

He Debugeado, linea a linea, el programa y es justamente cuando usa el evento LoadFromFile, cuando falla.


La manera de hacerlo es la sigueinte:

..Logo:= Sacar_Logo_Fich_Ini;
..If logo <> '' then
.....Try
........Logo:= Ruta + '\' + Logo;
........Logo.Picture.LoadFromFole (Logo); //Justamente aqui, falla.
....Except
........Logo.Free;
...End;
..End;

Nota: Pongo los puntos para q sea mas legible el codigo.

Gracias

maeyanes
23-12-2005, 15:39:34
La manera de hacerlo es la sigueinte:

..Logo:= Sacar_Logo_Fich_Ini;
..If logo <> '' then
.....Try
........Logo:= Ruta + '\' + Logo;
........Logo.Picture.LoadFromFole (Logo); //Justamente aqui, falla.
....Except
........Logo.Free;
...End;
..End;

Nota: Pongo los puntos para q sea mas legible el codigo.

Gracias

Viendo tu código, noto que usas Logo como si fuera un string pero al mismo tiempo como si fuera la variable tipo TImage. No se si sea así como en realidad lo estas usando o solo fue para ejemplificar, por lo pronto te pongo este ejemplo:


var
Logo: TImage; // TImage para uso temporal
LogoFileName: string;

begin
Logo := TImage.Create;
try
// Obtienes la ruta y el nombre de archivo del logo de un .ini
// Ejemplo: C:\imagen.jpg
LogoFileName := GetFileNameFromIni;
if LogoFileName <> '' then
begin
Logo.Picture.LoadFromFile(LogoFileName);
// Asignas la imagen al TQRImage
QRLogo.Picture.Assign(Logo.Picture)
end
finally
Logo.Free
end
end;


Sobre formatear tu código, puedes usar las etiquetas [ delphi ] [ /delphi ] (sin espacio entre los corchetes) y verás que no necesitas rellenar con puntos para identarlo. Para muestra, el código que te puse de ejemplo.



Saludos...

mrmanuel
11-01-2006, 12:40:08
nada, la cosa sigue igual.

sigue dando el fallo en el mismo sitio. a la hora de cargar la foto el QRImagen.

[dephi]
QRLogo.Picture.Assign(Logo.Picture)
[/delphi]



Gracias...... :confused:

mrmanuel
11-01-2006, 12:40:42
nada, la cosa sigue igual.

sigue dando el fallo en el mismo sitio. a la hora de cargar la foto el QRImagen.


QRLogo.Picture.Assign(Logo.Picture)




Gracias...... :confused: