Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Cargar foto en QReport en tiempo ejecución (https://www.clubdelphi.com/foros/showthread.php?t=27664)

mrmanuel 28-11-2005 10:44:35

Cargar foto en QReport en tiempo ejecución
 
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

Cita:

Empezado por mrmanuel
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

Imagenes en QReport
 
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

Código Delphi [-]
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.
Código Delphi [-]
  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.

Cita:

Empezado por mrmanuel
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

Cita:

Empezado por mrmanuel
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:

Código Delphi [-]
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.

Código Delphi [-]
        QRLogo.Picture.Assign(Logo.Picture)



Gracias...... :confused:


La franja horaria es GMT +2. Ahora son las 09:42:02.

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