Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Mostrar imagen/foto en DBgrid (https://www.clubdelphi.com/foros/showthread.php?t=88368)

DANIEL1818 27-05-2015 17:42:24

Mostrar imagen/foto en DBgrid
 
Muy buenos días! tengo un problema de hace días. El problema es el siguiente: tengo un DBgrid asociado a una tabla en ACCESS 2010 que tiene nombre, apellido, producto, descripción y foto, los campos en texto se ven bien pero la foto no! en vez de estar la foto en dicho campo de la tabla sale el texto "(Blob)". Como puedo solucionar este problema y que se pueda ver la foto? y mediante código desde delphi 2010 como puedo hacer para actualizar un registro y poder subir una foto? (la foto seria la del producto). Ojala puedan ayudarme, y muchísimas gracias de antemano!

Casimiro Notevi 27-05-2015 17:54:16

Mira los hilos del final de página, abajo del todo, encontrarás algunos que te sirven.

Por cierto, no olvides leer nuestra guía de estilo, gracias :)

ecfisa 27-05-2015 18:38:30

Hola Daniel.

Te agrego una opción más a las que te señaló Casimiro.
Código Delphi [-]
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TStringGrid(DBGrid1) do
  begin
    DefaultRowHeight := 60; // alto de filas a gusto
    RowHeights[0]    := 25;  // alto de título
  end;
  DBGrid1.Options := DBGrid1.Options - [dgColumnResize]; // columnas fijas
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if ( Column.FieldName = 'GRAPHIC' ) then
    with TPicture.Create do
    try
      Assign( Column.Field );
      DBGrid1.Canvas.StretchDraw( Rect, BitMap );
    finally
      Free;
    end;
end;

Muestra del ejemplo:



Saludos :)

ecfisa 27-05-2015 19:06:18

Hola de nuevo.

Y si deseas centrar los textos de las celdas para una mejor presentación:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
 with DBGrid1 do
  begin
    Options := DBGrid1.Options - [dgColumnResize];
    Columns[2].Width := 120;
  end;
  with TStringGrid(DBGrid1) do
  begin
    DefaultRowHeight := 120;
    RowHeights[0]    := 20;
  end;
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
   R: TRect;
begin
  if (Column.FieldName = 'IMAGE') then
  begin
    with TPicture.Create do
    try
      Assign(Column.Field);
      DBGrid1.Canvas.StretchDraw(Rect, BitMap);
    finally
      Free;
    end;
  end
  else with TDBGrid(Sender) do
  begin
    R:= Rect;
    FillRect( Canvas.Handle, R, HBRUSH(Color) );
    DrawText( Canvas.Handle, PChar(Column.Field.AsString), -1, R,
             DT_SINGLELINE + DT_VCENTER + DT_CENTER );
  end;
end;

Muestra:



Saludos :)


La franja horaria es GMT +2. Ahora son las 04:18:06.

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