PDA

Ver la Versión Completa : obtener el path de una imagen cargado en un Timage


enecumene
10-03-2007, 20:35:01
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, 21: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:


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

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:

var MiRuta: string;

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

MiRuta := OpenPictureDialog1.Filename;
Image1.Picture.LoadFromFile(MiRuta);

2. Ahora en un query haz algo como:
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, 21:16:08
Gracias Delphius por tu pronta repuesta ahora mismo intentare tus recomendaciones luego te aviso..

enecumene
10-03-2007, 23:20:56
este es el codigo como me esta quedando:

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:

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:

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

saludos,

enecumene
11-03-2007, 02:05:22
ya resolvi el código quedó asi:

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...