Jump to content


Photo

BLOB imagen en celda DbGrid?


Best Answer dooper , 28 April 2021 - 04:57 AM

Encontré la solución, simplemente era el campo del edit en su propiedad FONT.  marcarla en clwhite y ya desaparece.

Gracias

Go to the full post


  • Please log in to reply
6 replies to this topic

#1 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts

Posted 23 April 2021 - 11:49 AM

He probado de mil y una maneras en visuailzar la imagen en .bmp que tiene la tabla en el campo foto tipo "BLOB" en sqlit3 y ZeosLib, probé con un .jpg y tampoco. Pero no consigo visualizarla en la celda de un DBGRID1.

Si he conseguido que la guarde y he comprobado que lo ha hecho correctamente en la tabla de la bb.dd.

Este es el código que uso para intentar visualizarla en las celda, pero por más que intento no visualiza la imagen, los datos texto, si los visualiza. Y en un TImage como sería?

¿Qué hago mal?, para aprender de los errores?


php
  1. procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  2. DataCol: Integer; Column: TColumn; State: TGridDrawState);
  3. var
  4. bitmap : TBitmap;
  5. fixRect : TRect;
  6. begin
  7. fixRect := Rect;
  8.  
  9. Bitmap:=TBitmap.Create;
  10. if (Column.FieldName = 'foto' ) then
  11. try
  12. Bitmap.Assign(ZQuery1.FieldByName('foto'));
  13. DBGrid1.Canvas.StretchDraw(fixRect, BitMap);
  14. finally
  15. bitmap.Free;
  16. end;

Gracias.


  • 0

#2 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts

Posted 24 April 2021 - 11:21 AM

Estoy probando de esta manera y tampoco. Sí he conseguido que lo cargue en un TImage. Pero en la celda de la Dbgrid, imposible y ya no sé por donde indagar en el código y salir del embrollo, y hay a quien le funciona. Como digo la foto está en un campo BLOB de la tabla y he comprobado que está guardada sin problemas.


php
  1. if (Column.FieldName = 'foto' ) then
  2. begin
  3. Bitmap:=TBitmap.Create;
  4. unStream:= TMemoryStream.Create;
  5. try
  6. TBlobField(ZQuery1.FieldByName('foto')).SaveToStream(unstream);
  7. unstream.position:=0;
  8. Bitmap.LoadFromStream(unstream);
  9. DBGrid1.Canvas.Draw(fixRect.left,fixRect.top,Bitmap);
  10. finally
  11. bitmap.Free;
  12. unstream.free;
  13. end;
  14. end;


  • 0

#3 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts

Posted 24 April 2021 - 03:26 PM

Indagando he podido con el sacar la foto en el campo BLOB. El problema era por el IF ya que comparaba con el fieldname y estaba vacía porque me daba error al principio, y le he intento poner el campo y ahora sí.

Pero me saca debajo de la foto la palabra "BLOB" que quisiera eliminarlo y dejar sólo la foto. Veré como lo puedo hacer...


  • 0

#4 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts

Posted 26 April 2021 - 05:18 AM

Podría indicarme alguien como puedo eliminar el texto "BLOB" en el campo del mismo tipo en la celda del dbgrid. He conseguido insertar una imagen pequeña pero debajo sigue apareciendo la palabra "BLOB" y si no abarca toda la celda la imagen o la centro en la celda se solapan y se ve.

 

Una ayuda por favor, muchas gracias como siempre.


  • 0

#5 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts

Posted 28 April 2021 - 04:57 AM   Best Answer

Encontré la solución, simplemente era el campo del edit en su propiedad FONT.  marcarla en clwhite y ya desaparece.

Gracias


  • 1

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14466 posts
  • LocationMéxico

Posted 28 April 2021 - 02:28 PM

Hola estuve viendo este asunto y pensé que lo que requerías era colocar la imagen y no "ocultar" la palabra "blob".

 

Como sea, que bien que se resolvió..

 

Saludos


  • 0

#7 dooper

dooper

    Advanced Member

  • Miembros
  • PipPipPip
  • 298 posts

Posted 29 April 2021 - 04:42 AM

Hola Egostar, el tema de la imagen al fin puse colocar la imagen, despues de muchos golpes de cabeza y dejar y retomar pude hacerlo. Muchas gracias.


  • 0




IP.Board spam blocked by CleanTalk.