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 08-07-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Problema con tabla e imagenes

Pues vereis, tengo la tipica pantalla de mantenimiento de clientes y un timage que uso para visualizar la foto de cada cliente.
En la tabla lo que guardo es el path y nombre de la foto, y cuando visualizo un registro, cargo la foto.
Pues bien, me interesaria poder extraer el nombre de la foto que se esta visualizando en el timage, ya que ahora lo saco de un opendialog, y me da problemas,por lo que necesitaria poder sacar el path y nombre de la imagen desde el propio Timage, pero me estoy volviendo loco y no encuentro la manera de sacarlo.

Un saludo y gracias anticipadas.
Responder Con Cita
  #2  
Antiguo 08-07-2004
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Crea un campo oculto donde almacenas el path de la imagen incluyendo el FileName..
Responder Con Cita
  #3  
Antiguo 08-07-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Hay algunos formatos de imágenes que permiten almacenar ciertos datos y demás conjunto con la imágen, pero hacer rutinas que manejen eso es un poco innecesario según la cuestión.

Lo mejor sería tener un campo más en la tabla, como bien dijo Delfino, para almacenar esta info.

Saludos...
__________________
Suerte
.: Gydba :.
Responder Con Cita
  #4  
Antiguo 08-07-2004
^TxTeZ^ ^TxTeZ^ is offline
Registrado
 
Registrado: jul 2004
Posts: 8
Poder: 0
^TxTeZ^ Va por buen camino
Hombre esta solucion es un poco ñapa pero tb es valida.

Tienes dos funciones que son Pos, Copy y Length para manejar cadenas de caracteres, y puesto que tu tienes almacenado el path pej:

c:\blabla\foto.ext

Puedes buscar la posicion del "." que te indica la posicion de la extension y jugar con el Copy, el Length y el Pos para sacar el nombre del Archivo.

Es mucho mas sencillo lo que te han dicho anteriormente pero a lo mejor no te interesa....
Responder Con Cita
  #5  
Antiguo 08-07-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
A ver, creo que no me explique bien. Yo ya tengo un campo donde guardo el path+nombre de la imagen.
Ahora bien, me interesaria poder extraer eso del timage cuando ya la tengo cargada.
Responder Con Cita
  #6  
Antiguo 08-07-2004
^TxTeZ^ ^TxTeZ^ is offline
Registrado
 
Registrado: jul 2004
Posts: 8
Poder: 0
^TxTeZ^ Va por buen camino
pues creo que del TImage no puedes sacarlo, a menos que yo sepa.

¿Como tienes grabada la imagen en la BD, como campo BLOB o simplemente guardas un String con la ruta de la image?

Bueno en todo caso, dudo que del TImage puedas sacar el nombre del archivo ya que es un Stream
Responder Con Cita
  #7  
Antiguo 08-07-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Pues yo lo que hacia era guardar en la bd la ruta de la imagen y de ahi visualizarla en el Timage. Hasta ahi bie, pero cuando queria sacar la ruta de la misma imagen que estaba visualizando, pues venian los problemas.
Visto que no puedo hacer esto que busco, pues me he puesto a intentarlo con un campo blob y el dbimage.
El problema vino, cuando si que me visualiza ficheros jpg, pero no me los guarda en la bd. No tengo ni idea de porque (si, si puse el uses jpeg...), pero solo guarda los bmp en la bd. Total, que me he hecho una rutina que me pasa el jpg a bmp antes de meterlo en la tabla y santas pascuas, que el tema este me tiene ya bastante mareado.

Muchas gracias a todos los que me han ayudado!!!!
Un saludo y hasta la proxima.
Responder Con Cita
  #8  
Antiguo 08-07-2004
^TxTeZ^ ^TxTeZ^ is offline
Registrado
 
Registrado: jul 2004
Posts: 8
Poder: 0
^TxTeZ^ Va por buen camino
Yo hago lo siguiente para guardar una imagen:


Código:
 procedure TFAFLogos.GuardaLogo;
begin
  try
	with (DataSource1.DataSet as TClientDataSet) do
	begin
	  if FAFMLogoCliente.FileName <> '' then
	  begin
		Edit;
		(FieldByName('LOGO') as TBlobField).LoadFromFile(FAFMLogoCliente.FileName);
		Post;
	  end;
	end;
  except
	Forense.Autopsia (ClassName + '.GuardaFoto');
	raise;
  end;
end;
Responder Con Cita
  #9  
Antiguo 11-07-2004
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
para guardar imagenes en campo blob yo lo hago asi:

Código:
campoblob.loadfromfile(archivo);
para visualizarlas desde un campo blob lo hago con un TImage pq el TDBImage permite unicamente los bmp:

Código:
procedure TForm1.DataSourceDataChange(Sender: TObject; Field: TField);
var bs : TStream; jp : TJpegImage; buff: Word;
begin
bs := DataSet.CreateBlobStream(CampoBlob,bmRead);
try
bs.Seek(0,soFromBeginning);
if bs.Read(buff,2) > 0 then
begin
bs.Seek(0, soFromBeginning);
case buff of
$4D42: image1.Picture.Bitmap.LoadFromStream(bs);
$0000: image1.Picture.Icon.LoadFromStream(bs);
$0001,$CDD7: image1.Picture.Metafile.LoadFromStream(bs);
$D8FF: begin
jp := TJpegImage.Create;
jp.LoadFromStream(bs);
image1.Picture.Assign(jp);
FreeAndNil(jp);
end
else image1.Picture := nil;
end;
end;
finally
FreeAndNil(bs);
end;
end;
hasta el momento me va muy bien con esta manera, pruebalo a ver si te sirve.
Responder Con Cita
  #10  
Antiguo 05-10-2004
paren paren is offline
Miembro
 
Registrado: jul 2004
Ubicación: Tijuana, B. C. Mexico
Posts: 18
Poder: 0
paren Va por buen camino
Question Valores del Buffer

Cita:
Empezado por Delfino
para guardar imagenes en campo blob yo lo hago asi:

Código:
campoblob.loadfromfile(archivo);
para visualizarlas desde un campo blob lo hago con un TImage pq el TDBImage permite unicamente los bmp:

Código:
...
 case buff of
 $4D42: image1.Picture.Bitmap.LoadFromStream(bs);
 $0000: image1.Picture.Icon.LoadFromStream(bs);
 $0001,$CDD7: image1.Picture.Metafile.LoadFromStream(bs);
 $D8FF: begin
 jp := TJpegImage.Create;
 jp.LoadFromStream(bs);
 image1.Picture.Assign(jp);
 FreeAndNil(jp);
 end
...
hasta el momento me va muy bien con esta manera, pruebalo a ver si te sirve.
Hola delfino, de donde sacaste los valores del buffer??
Por ejemplo que valor usar si el archivo es un gif o un png o un wmf
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


La franja horaria es GMT +2. Ahora son las 03:17:01.


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