Problemas con imágenes en Delphi 6

Exporté una tabla de Access a Paradox5, uno de los campos de ésta tabla son imágenes. Realicé una aplicación en Delphi 6 para manejar esa tabla Paradox pero cuando intento ver la imagen mediante un cuadro DBImage me sale el error "Imagen bitmap no válida", ¿habrá solución para esto? Ya que sino tendría que copiar y pegar imagen por imagen y son muchísimas.
Desde ya muchas gracias.
Saludos.
Walter
PD: aclaro por las dudas que las imágenes en access no estaban vinculadas sino incrustadas y aparte no tengo los archivos de dichas figuras como para rutearlas en el código del Delphi. Las imágenes son formato bmp.
Respuesta
1
Hi,
Mira, lo que tengo hecho yo (que costo bastante) es para visualizar imágenes guardadas en formato JPEG en una tabla de una base de datos mySQL utilizando Delphi 5.
Yo pienso que te va a a servir perfectamente. El código utilizado para agregar o insertar un registro imagen es el siguiente:
**************************
buf:=Tmemorystream.create;
try
foto.Picture.Graphic.SaveToStream(buf);
buf.Seek(0, soFromBeginning);
if (FotoNueva) then
begin
dm1.qcartel.insert;
dm1.qcartelid_titulo.Value := dm1.qtitulos['ID_TITULO'];
end
else
dm1.qcartel.edit;
dm1.qcartelcartel.LoadFromStream(buf);
dm1.qcartel.post;
finally
buf.free;
end;
****************************
El objeto "dm1" es un DataModule donde guardo todos los objetos de datos.
Fíjate que utilizo la propiedad Graphic en el objeto foto lo que me devuelve un JPEG. Si utilizas Bitmap estarías guardando un BMP.
Para visualizar la imagen utilizo un TImage común, no un TDBImage. Este ultimo tiene muchas restricciones.
Este es el código que utilizo:
****************************************
jp := TJpegImage.Create;
buf := TMemoryStream.Create;
dm1.qcartel.open;
if not(dm1.qcartel.eof) then
begin
try
dm1.qcartelcartel.SaveToStream(buf);
buf.Seek(0, soFromBeginning);
jp.LoadFromStream(buf);
Foto.Picture.Assign(jp);
finally
end;
end
else
begin
foto.Width := 100;
foto.Height := 100;
end;
buf.free;
jp.free;
****************************************
Lo que tuve que hacer fue agregar los campos que voy a utilizar ID_TITULO y CARTEL en el TQuery (qcartel) que utilizo. Esto es necesario porque tienes que aclararle que el tipo de datos de CARTEL (BlobType) es un ftBlob.
Ahh!, con una tabla de Access también funciona.
Nahuelon..
Muchas gracias por tu respuesta, pero tengo un problema, el programa no puede llevar un TQuery ya que cuando se ejecuta la aplicación el query genera un archivo temporario en la misma carpeta donde se encuentra la aplicación y lo que estoy haciendo es para que se ejecute únicamente desde un CD o sea que me tiraría un error al querer generar el temporario.
De todos modos muchísimas gracias por tu atención.
Saludos
Walter
Hi,
Mira, obviamente podes usar cualquiera de los componentes para llamar a la tabla de la base de datos (TTable, TAdoTable, TQuery). No todos crean este archivo que decís.
Pruébalo... por favor si ya encontraste la solución finaliza la pregunta.
Cualquier consulta que tengas no dudes en preguntarme.
Nahuelon..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas