Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   obtener el path de una imagen cargado en un Timage (https://www.clubdelphi.com/foros/showthread.php?t=41250)

enecumene 10-03-2007 21:35:01

obtener el path de una imagen cargado en un Timage
 
hola!!

a lo mejor es algo bastante sencillo pero me he cansado de buscar informacion sobre este tema ya sea por google y aqui en el foro, lo que quiero hacer es guardar la ruta de una imagen a una base de datos Access, yo se cargar la imagen en un Timagen en incluso se guardar una imagen en una campo Blob pero de esa forma no me conviene porque la misma engorda la base de datos.

supongo que al obtener el path de la imagen cargado en un timage se muestra en un DBEdit para luego grabarlo en la base de datos, en la red solo encuentro informacion de como guardar una imagen dentro la base de datos y no la ruta ya llevo dos semanas buscando esa información por eso he decidido abrir este hilo, espero que me puedan mostrar la forma de hacerlo, gracias y saludos de antemano...

Delphius 10-03-2007 22:08:47

enecumene, de lo que se... no puede obtenerse el path de una imagen cargada en un TImage, en modo de ejecución no es posible hacer algo como:

Código Delphi [-]
path := Image1.Filename, // tampoco es válido esto:
path := Image1.Picture.Filename

Ahora, bien en tiempo de ejecución puedes cargar una imagen con el comando
Código Delphi [-]
Image1.Picture.LoadFromFile('LaPathCompleta');

Ahora... la manera de ingresar la path hacia la base de datos sería:
1. Tener una variable para usar como parámetro para una query. Digamos por ejemplo algo como:

Código Delphi [-]
var MiRuta: string;

2. Entonces... para abrir la imagen, cargas en MiRuta el FileName, usando por ejemplo un picturedialog:

Código Delphi [-]
MiRuta := OpenPictureDialog1.Filename;
Image1.Picture.LoadFromFile(MiRuta);

2. Ahora en un query haz algo como:
Código Delphi [-]
Miquery.Close;
Miquery.ParamByName('MiParametro').AsString := MiRuta;
Miquery.SQL.add('insert into..... //bla... bla...');
Miquery.SQL.add('campoPath = :MiParametro'); // el parámetro va precedido de los dos puntos
Miquery.ExecSQl. // O es Miquer1.Open .... La verdad que no me acuerdo...

Lo estroy escribiendo al vuelo... no tengo Delphi abierto en estos momentos. Pero creo que con algo asi puedes almacenar la path.

Por cualquier cosa avisa, o busca en los foros porque este tema es "moneda corriente".

Saludos,

enecumene 10-03-2007 22:16:08

Gracias Delphius por tu pronta repuesta ahora mismo intentare tus recomendaciones luego te aviso..

enecumene 11-03-2007 00:20:56

este es el codigo como me esta quedando:

Código Delphi [-]
procedure TfrmAddPel.CargarFoto1Click(Sender: TObject);
var MiRuta: String;
begin
if CargarPoster.Execute then begin
 MiRuta := CargarPoster.FileName;
 JvImage1.Picture.LoadFromFile(MiRuta);
  qryPeliculas.Close;
  qryPeliculas.Parameters.ParamByName('Foto').Value := MiRuta;
  qryPeliculas.SQL.add('insert into PELICULAS values');
  qryPeliculas.SQL.add('PELFOTO = :Foto'); // el parámetro va precedido de los dos puntos
  qryPeliculas.Open;
 end;
end;

Problema:

Cita:

qryPeliculas.Parameters.ParamByName('Foto').Value := MiRuta;
como se trata de componentes ADO no existe la propiedad ParamByName al no poner la propiedad Parameters, AsString no me reconoce por eso puse Value y al cargar la foto me sale un error del parametro impropiado o que falta datos, que puede ser??

error:

Cita:

Parameter object is improperly defined, inconsistent or imcoplete information was provided.
saludos,

enecumene 11-03-2007 03:05:22

Ya Resolvi!!!!
 
ya resolvi el código quedó asi:

Código Delphi [-]
procedure TfrmAddPel.SpeedButton1Click(Sender: TObject);
begin
  try
   CargarPoster.Execute;
   JvImage1.Picture.LoadFromFile(CargarPoster.FileName);
  Finally
  if CargarPoster.FileName <> '' then DBEdit10.Text := CargarPoster.FileName;
  CargarPoster.Free;
  end;
end;

que hace el código? pues lo que hace es que carga la imagen en un Timage y a la vez Carga la ruta en un DBEdit enlazado a la tabla!!. espero que este código le sirva de utilidad a muchos otros.

Bye...


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

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