Ver Mensaje Individual
  #3  
Antiguo 24-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por David
Me gustaria saber la razón y también la solución.
La razón es que el tipo Graphic de Paradox no acepta este formato de imágenes. Eso no significa que no puedas guardar imágenes jpg en una tabla Paradox, sólo que no es tan inmediato.

Para empezar debes usar otro tipo de campo, por ejemplo Binary. Básicamente el tipo Binary te sirve para almacenar cualquier cosa, una imágen, una canción o cualquier archivo en un formato que Paradox no entienda.

Lo malo es que entonces no hay una forma directa de conectar este tipo de campos a un TDBImage (*) para mostrar y agregar imágenes.

En su lugar debes usar un TImage normal.

Por ejemplo, para agregar una imagen a la tabla puedes cargarla en un TImage con Image.Picture.LoadFromFile (deberás incluir la unidad jpeg) o directamente usando un objeto TJpegImage de la unidad jpeg en caso de que no requieras mostrar la imagen al usuario.

Después deberás usar el método SaveToStream de Image.Picture.Graphic o JpegImage para guardar el contenido a un Stream. Me parece que recomiendan un TBlobStream aunque puedes hacerlo con TStringStream.

Ya desde el Stream puedes copiar el contenido al campo:

Table1.FieldByName('foto').AsString := Stream.Datatring;

Y con esto ya tendrás guardada la imagen.

Para desplegarla tienes que seguir mas o menos los pasos inversos.

Asignas el contenido del campo a un TStringStream al momento de crear el stream:

Stream := TStringStream.Create(Table1.FieldByName('foto').AsString);

Y usas el método LoadFromStream de Image.Picture.Graphic o de JpegImage para cargar la foto.

Te estoy diciendo los pasos de memoria así que puedo estar equivocado en algo. Pero si buscas en los foros encontrarás más detalles. Me parece que hay un hilo del compañero Snake donde describe con precisón lo que hay que hacer. Yo nada más te estoy describiendo a grandes rasgos el proceso.

(*) Sí existen formas de usar un DBImage para mostrar imagenes jpg pero tienes que construir un derivado de TField que entienda este tipo de datos. Busca en el Code Central de Borland Developer Network las aportaciones de Robert Kuhlmann que versan sobre el tema. Él tiene un código para que puedas usar un DBImage con imágenes jpg.

// Saludos
Responder Con Cita