Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2024
MARIO2019 MARIO2019 is offline
Miembro
 
Registrado: abr 2019
Posts: 11
Poder: 0
MARIO2019 Va por buen camino
Visualizar Imagen Formato Jpg En Timage Desde Un Dbgrid

Buenos dias, tengo un proyecto donde he cargado la foto con formato jpg en una tabla (Campo foto (blob)) de estudiante. En un DBGRID tengo los datos de los estudiantes. Lo que necesito es que al posicionarme en una fia del DBGRID se visualice la foto del estudiante en un TIMAGE.

Antes no tenia problema al cargar imagenes con formato BMP, pero al cargar imagen con otro formato (JPG), DBIMAGE me quedo obsoleto

Este es el BOTON que carga la foto.

Código Delphi [-]
procedure TfALtaestudianbte.BitBtn1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    fmodulo.testudiante.Edit;
    Image2.picture.loadfromfile(OpenDialog1.FileName);
    fmodulo.testudiante.FieldByName('f').Assign(Image2.Picture.Graphic);
  end;
Desde ya muy agradecido


Nota del moderador: Por favor, añadid TAGs cuando pongáis código, trozos de XML,... y en tu caso ya que eres nuevo, bienvenido y te recomiendo revidsar la guía de estilo de los foros.

Última edición por Neftali [Germán.Estévez] fecha: 12-12-2024 a las 15:14:29.
Responder Con Cita
  #2  
Antiguo 12-12-2024
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Si es una versión muy antigua de delphi entonces tendrás que añadir jpeg al uses.
Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  BlobStream: TStream;
  JpegImage: TJpegImage;
begin
  if Column.FieldName = 'ImageField' then
  begin
    JpegImage := TJpegImage.Create;
    try
      BlobStream := DBGrid1.DataSource.DataSet.CreateBlobStream(Column.Field, bmRead);
      try
        JpegImage.LoadFromStream(BlobStream);
        DBGrid1.Canvas.StretchDraw(Rect, JpegImage);
      finally
        BlobStream.Free;
      end;
    finally
      JpegImage.Free;
    end;
  end
  else
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Responder Con Cita
  #3  
Antiguo 12-12-2024
MARIO2019 MARIO2019 is offline
Miembro
 
Registrado: abr 2019
Posts: 11
Poder: 0
MARIO2019 Va por buen camino
Gracias Casimiro, estoy utilizando Delphi xv, ya le agregué al uses. Al ejecutarlo me salta un error en bm Read
Responder Con Cita
  #4  
Antiguo 12-12-2024
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 947
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado colega, hace ya un tiempo, realice cambios a componente DBImage para permitir otros formatos de imagenes a desplegar...

En el siguiente enlace CLDBImagen lo puede descargar. Está el código del componente un ejemplo de su uso (Con tablas Paradox )...Yo lo utilizo con Firebird y sin ningún problema ...

Espero le sirva, saludos cordiales
Responder Con Cita
  #5  
Antiguo 12-12-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por MARIO2019 Ver Mensaje
Buenos dias, tengo un proyecto donde he cargado la foto con formato jpg en una tabla (Campo foto (blob)) de estudiante. En un DBGRID tengo los datos de los estudiantes. Lo que necesito es que al posicionarme en una fia del DBGRID se visualice la foto del estudiante en un TIMAGE.

Antes no tenia problema al cargar imagenes con formato BMP, pero al cargar imagen con otro formato (JPG), DBIMAGE me quedo obsoleto
Te adjunto un procedimiento que te permite cargar en un TImage, una imagen almacenada en un campo de una base de datos (ya sea BMP o JPG).
Necesitas pasarle el campo de Tipo BLOB, la extensión y el TImage donde quieres que te la dibuje.
Es de los ejemplos que puedes encontrar en el FTP del Club.

Código Delphi [-]
procedure MostrarCampoJPGImage(FieldImagen:TBlobField; ext:string; Picture:TPicture);
var
  Stream: TMemoryStream;
  Jpg: TGraphic;
begin
  Jpg := nil;
  Stream := nil;
  try
    Stream := TMemoryStream.Create;
    FieldImagen.SaveToStream(Stream);
    if Stream.Size > 0
     then begin
          if AnsiUpperCase(ext)='.BMP' then
           Jpg := TBitmap.create
          else
           Jpg := TJpegImage.Create;

           Stream.Position := 0;
           Jpg.LoadFromStream(Stream);
           Picture.Assign(Jpg);
         end
     else Picture.Assign(nil);
  except
    Picture.Assign(nil);
  end;
  jpg.Free;
  Stream.Free;
end;


Para llamarlo puedes hacer de una de estas formas:

Código Delphi [-]
  // para una imagen JPG
  MostrarCampoJPGImage(Table1Imagen, '.jpg', Image2.Picture);
  // para un BMP
  MostrarCampoJPGImage(Table1Imagen, '.bmp', Image2.Picture);


Table1Imagen es el campo de tipo blob de tu tabla
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 12-12-2024
MARIO2019 MARIO2019 is offline
Miembro
 
Registrado: abr 2019
Posts: 11
Poder: 0
MARIO2019 Va por buen camino
Problema con bmRead - Debo declarar la clase TBlobStream

Al ejecutar el programa, me sale un error BMREAD. Donde debo declarar el Objeto de esta clase

Código SQL [-]
Constructor Create(Field: TBlobField; Mode: TBlobStreamMode)
Donde lo declaro, en el form
Responder Con Cita
  #7  
Antiguo 12-12-2024
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 947
Poder: 25
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Debes incluir la unidad Data.DB.

Saludos cordiales
Responder Con Cita
  #8  
Antiguo 12-12-2024
MARIO2019 MARIO2019 is offline
Miembro
 
Registrado: abr 2019
Posts: 11
Poder: 0
MARIO2019 Va por buen camino
EROOR E2003 Undeclared identifier: 'bmRead'

Sigoejecutando y me sale este error
Código Delphi [-]
 BlobStream := DBGrid1.DataSource.DataSet.CreateBlobStream(Column.Field, bmRead);
Código Delphi [-]
 E2003 Undeclared identifier: 'bmRead'

Me podrian ayudar donde declarar TBlobStreamMode
Responder Con Cita
  #9  
Antiguo 13-12-2024
MARIO2019 MARIO2019 is offline
Miembro
 
Registrado: abr 2019
Posts: 11
Poder: 0
MARIO2019 Va por buen camino
Solucion E2003 Undeclared identifier: 'bmRead'

En el USES DEL FORM lo instale a DB, Solucionado. Voy a tratar de subir la imagen y comento. Gracias a todos
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
Abrir una imagen desde un Timage pablopessoa API de Windows 10 18-09-2017 08:55:12
Poner imagen en Timage desde portapapeles gabyzava Gráficos 3 24-09-2010 18:01:44
Visualizar imagen en una celda de un DBGrid MaMu Varios 1 31-07-2008 17:40:42
Cargar una imagen desde la web a un TImage asegura Gráficos 3 20-10-2006 02:13:10
Cargar una imagen desde internet a un TIMAGE Mr.Takito Gráficos 1 23-08-2005 01:32:02


La franja horaria es GMT +2. Ahora son las 03:10:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi