Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Mostra Blob como imagen

Tengo una tabla access a donde le cargue imagenes en un campo blob sin problemas. Pero como puedo hacer para que cuando cargo la tabla en un DBGrid, me visualice directamente la imagen y no que me figure [BLOB] en dicho campo.

Alguien me puede dar una mano?

Saludos y Gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 28-05-2007
lucero_chivas lucero_chivas is offline
Miembro
 
Registrado: ene 2006
Ubicación: León, Guanajuato
Posts: 48
Poder: 0
lucero_chivas Va por buen camino
Bueno, lo que yo hago es quitar la columna de imagen del Grid y creo aparte un DBImage..... el cual lo ligo con el campo de la tabla donde esta guardada la imagen....

No se si te sirva o era algo diferente lo q buscabas
__________________
...... No digas nada si lo q vas a decir no es más bello q el silencio .....
Responder Con Cita
  #3  
Antiguo 28-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
En realidad lo que quiero es mostrar la imagen dentro de la misma celda, son bmp no mas grandes que un icono. Haciendolo como me sugeris, me funciona, ya lo habia probado, utilizando un DBControlGrid tambien, pero lo que quiciera es poder pintar la imagen dentro de la misma celda u otra cualquira.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 29-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Hice esto, pero no me dibuja la imagen adentro de la celda, y no se por que me sale este error

Código Delphi [-]
[Warning] Unit2.pas(824): Variable 'icono' might not have been initialized

El cual solucione, cambiando a FALSE el DefaultDrawing del DBGrid, pero aun asi no me dibuja la imagen dentro de la celada

Código Delphi [-]
procedure TFormSubclases.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
var icono: TBitmap;
begin
if Field.Name = 'Icono' then
begin
  try
   icono:= Tbitmap.Create;
   icono.Assign(TBlobField(Field));
   (Sender as TDBGrid).Canvas.FillRect(Rect);
   (Sender as TDBGrid).Canvas.Draw(Rect.left+3,Rect.Top+1, icono);
  finally
    icono.free;
  end;
end
else
    (Sender as TDBGrid).DefaultDrawDataCell(Rect, Field, State);
end;

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;

Última edición por MaMu fecha: 29-05-2007 a las 06:36:33.
Responder Con Cita
  #5  
Antiguo 30-05-2007
Avatar de casacham
casacham casacham is offline
Miembro
 
Registrado: abr 2006
Ubicación: Cordoba->Argentina. Arboleas->Almeria->España
Posts: 184
Poder: 19
casacham Va por buen camino
Cool Es el tema mas preguntado del foro

Lee tu respuesta en este hilo --> http://www.clubdelphi.com/foros/showthread.php?t=41768
Responder Con Cita
  #6  
Antiguo 30-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por casacham
Lo lei detenidamente, pero la solucion que me ofrece no es la que busco, ya que yo poniendo un DBImage o un Timage linkado al campo blob, visualizo la imagen sin problema alguno. Lo que yo quiero es pintar esa imagen en una celda del DBGrid donde se visualizan los registros, sin necesidad de tener que poner un DBImage o un Timage.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #7  
Antiguo 30-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Acabo de probar tu código practicamente sin modificaciones y me ha funcionado bien. La única diferencia sería en la comparación:

Código Delphi [-]
if Field.Name = 'Icono' then

que yo pongo como

Código Delphi [-]
if Field.FieldName = 'Icono' then

Name es el nombre de la componente TField y no el nombre del campo. Así que yo creo que el único problema es ése, la condición nunca se cumple de manera que todo se dibuja tal cual.

// Saludos
Responder Con Cita
  #8  
Antiguo 31-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Roman, yo lo acabo de probar otra vez, y no me dibuja nada, de hecho ni siquiera me muestra los demas datos, y me vuelve a salir que la variable icono no puede inicializarse. No se que puede ser, que estoy haciendo mal.

La imagen la cargo asi

Código Delphi [-]
procedure TLocal.Button1Click(Sender: TObject);
var
  MS : TMemoryStream;
begin
MS := TMemoryStream.Create;
  MS.LoadFromFile('c:\a.bmp');
     SQL.SQL.Clear;
    SQL.SQL.Add('INSERT INTO unidades (icono) VALUES(:PFOTO)');
    SQL.Parameters.ParamByName('PFOTO').LoadFromStream(MS,ftBlob);
    // o bien (pruebo ambas, creo que no hay diferencia pero por si acaso)
    //  SQL.ParamByName('PFOTO').LoadFromStream(MS,ftBlob);
    SQl.ExecSQL;
    MS.Free;
    QUnidades.Close;
    Qunidades.Open;
end; // del procedure

y el procedimiento para que se dibujen es este

Código Delphi [-]
procedure TLocal.DBGrid3DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
var icono: TBitmap;
begin
if Field.FieldName = 'Icono' then
begin
  try
   icono:= Tbitmap.Create;
   icono.Assign(TBlobField(Field));
   (Sender as TDBGrid).Canvas.FillRect(Rect);
   (Sender as TDBGrid).Canvas.Draw(Rect.left+3,Rect.Top+1, icono);
  finally
    icono.free;
  end;
end
else
    (Sender as TDBGrid).DefaultDrawDataCell(Rect, Field, State);
end;

Pero ni se dibuja la imagen en la celda, ni me muestra los datos de cualquier otro campo. La propiedad DefaultDrawing esta en False. Pero me sigue saliendo:

Código Delphi [-]
[Warning] Unit2.pas(824): Variable 'icono' might not have been initialized

Porque??, lo que pienso es que al no coincidir el FieldName, no se crea, por lo que tampoco puede destruirse, a lo que voy, es porque? si en mi tabla tengo el campo icono como ObjetoOLE, y me figura como BLOB.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #9  
Antiguo 31-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Volvi a hacer todo de nuevo, y me sigue sin funcionar, como hiciste para que te funcionara? me podrias poner algo de codigo? tal vez asi me de cuenta.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema al intentar guardar una imagen como blob en una tabla Gigabyte1024 Conexión con bases de datos 3 22-02-2007 23:30:34
Cargar imagen BLOB usando BDE leodenis784 Gráficos 3 12-09-2006 10:31:07
conocer extensión de imagen en un campo blob... uper Gráficos 1 02-02-2006 20:21:42
Guarda Imagen en Campo Blob con Sql kpss8m Firebird e Interbase 2 16-08-2005 16:18:04
Funcion Udf que devuelva un blob (imagen) Emiro Firebird e Interbase 2 04-08-2003 15:59:40


La franja horaria es GMT +2. Ahora son las 16:48:02.


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
Copyright 1996-2007 Club Delphi