Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Error al asignar un TQRImage

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Error al asignar un TQRImage Responder citando

Tengo un TQRImage que cargo a partir de una tabla Firebird. Lo tengo hecho así:
Código:
QRImage1->Picture->Assign(Query->FieldByName("Imagen"));

Exactamente igual lo tengo hecho para un TImage de otro formulario. En algunos casos en la fila seleccionada no hay ninguna imagen, pero mientras el TImage me muestra el cuadro en blanco, al hacer el Preview() del QuickReport me da un error: Bitmap image is not valid.

He probado a poner en el Preview() un try...catch, pero sigue dando el error; he probado a verificar si el campo de la tabla tiene contenido o si este es nulo, pero no hace nada. Ejecuta la línea de carga anterior sin dar error en ningún caso hasta que se visualiza.

¿Cómo puedo evitarlo?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Si el contenido del campo NO es un BMP, el error siempre sale pues los componente del Quick Report solo manejan BMP

una solucion que me funciona es convertir el contenido del campo a un BMP de la siguiente manera

Código:
Graphics::TBitmap *tbmp = new Graphics::TBitmap();

// de esta manera seria en tu caso
tbmp->Assign(Query->FieldByName("Imagen"));

// pero si el campo es un JPG, recuerda extraerlo y enviarlo
// como bmp usando lasl funciones del foro para el tratamiento
// de imagenes en Firebird.
//tbmp->Assign(::BLOBtoJPG(Query->FieldByName("Imagen")));

// y posteriormente ya lo insertas en el QRImage
// que tienes
QRImage1->Picture->Assign(tbmp);



Saludos
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias César. Lo probaré en cuanto pueda y casi seguro que me resolverá el problema. No obstante si me he dado cuenta que el error aparece en aquellos elementos en los que el campo debería estar vacío porque sé que no tienen imagen en la tabla, y esto es lo que me tiene desconcertado.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

¡Solucionado! Me ha bastado con comprobar si había lago. Lo he hecho así:
Código:
TMemoryStream *msImagen = new TMemoryStream;
static_cast<TGraphicField>(Query->FieldByName("Imagen"))->SaveToStream(msImagen);
if (msImagen->Size > 0)
     QRImage1->Picture->Assign(Query->FieldByName("Imagen"));

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

puedes evaular antes el campo de la siguiente manera


Código:
if( !Query->FieldByName("Imagen")->Value.IsEmpty() )
{
Graphics::TBitmap *tbmp = new Graphics::TBitmap();

// de esta manera seria en tu caso
tbmp->Assign(Query->FieldByName("Imagen"));

// pero si el campo es un JPG, recuerda extraerlo y enviarlo
// como bmp usando lasl funciones del foro para el tratamiento
// de imagenes en Firebird.
//tbmp->Assign(::BLOBtoJPG(Query->FieldByName("Imagen")));

// y posteriormente ya lo insertas en el QRImage
// que tienes
QRImage1->Picture->Assign(tbmp);
}

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.