Delphi - Visor de Imagenes

   
Vista:

Visor de Imagenes

Publicado por Marcelo (25 intervenciones) el 21/02/2008 23:17:08
Hola Gusto en Saludarte! y ante todo gracias por la ayuda prestada. mi consulta es la siguiente. resulta que se como cargar una imagen en el image. pero me gustaria hacer una aplicacion que tome todas las fotografias que esten en una carpeta y al hacer clic en siguiente visualice la fotografia siguiente o anterior segun corresponda. tipo visor de windows. se puede? alguien pueda dar una idea de como seria? Saludos. (delphi 5)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Visor de Imagenes

Publicado por E.T. (1106 intervenciones) el 22/02/2008 17:32:02
Primero tendrías que cargar todos los archivos que contiene alguna carpeta, lo cual puedes lograrlo al modificar la función que muestran en la siguiente página:

http://delphiallimite.blogspot.com/2007_06_17_archive.html

La función la ponen abajo del titulo "Obtener los favoritos de Internet Explorer" que es la primera en la página, una vez que la tengas modificada carga tu primer imagen, con un OpenDialog o como tu lo hagas normalmente, luego llamas a la función para obtener los archivos de la siguiente manera

var
Lista:TStrings;
begin
Lista:=TStrings.Create;
Lista:=ObtenerFavoritosIE( extractFilePath( 'Ruta de la primera imagenimagen1.bmp' ) );
end;
{La función "extractFilePath" te regresa la ruta del archivo que diste como parámetro}
Ahora ya tienes todos los archivos que hay en la carpeta donde está la imagen que abriste, ahora hay que buscar el indice de la imagen dentro de la variable Lista, que creo que hay algo así como Lista.IndexOf( ); con ella obtienes el indice de tu imagen, ahora ese indice lo guardas en una variable ("indice" para este ejemplo) y cuando presiones un botón haces algo como esto

{Para el caso de dar en el botón siguiente hacemos lo siguiente}

Inc(indice);
//Para el caso de que sea la anterior imagen es lo mismo pero con la linea de arriba como //Dec(Indice);
//hay que validar que la variable indice no exeda el número de items que tenemos en la //variable Lista
Image1.loadFomFile( Lista[ indice]);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejemplo funcional

Publicado por E.T. (1106 intervenciones) el 22/02/2008 18:34:45
Solo necesitas tres botones, un open dialog y un Timage

Falta validar el tipo de imagenes que quieres abrir en el open dialog, ademas de que solo funciona con bmp y jpg

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, JPEG;

type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
Image1: TImage;
Button2: TButton;
Button3: TButton;
function ObtenerFavoritos( sRutaFavoritos: String ): TStrings;
procedure Button1Click(Sender: TObject);
procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
Lista:TStrings;
Imagen:TPicture;
indice:integer;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Execute;
end;

function TForm1.ObtenerFavoritos( sRutaFavoritos: String ): TStrings;
var
Busqueda: TSearchrec;
ListaFavoritos: TStrings;
sRuta, sDirectorio, sal: String;
iEncontrado: Integer;
begin
ListaFavoritos := TStringList.Create;
try
sRuta := sRutaFavoritos + '*.jpg';
sDirectorio := ExtractFilepath( sRuta );
iEncontrado := FindFirst( sRuta, faAnyFile, Busqueda );
while iEncontrado = 0 do begin
sal:=Busqueda.Name;
Delete(sal,Pos('.',sal),4);
ListaFavoritos.Add( sDirectorio + sal+ '.jpg' {sArchivo} );
iEncontrado := FindNext( Busqueda );
end;
sRuta := sRutaFavoritos + '*.bmp';
sDirectorio := ExtractFilepath( sRuta );
iEncontrado := FindFirst( sRuta, faAnyFile, Busqueda );
while iEncontrado = 0 do begin
sal:=Busqueda.Name;
Delete(sal,Pos('.',sal),4);
ListaFavoritos.Add( sDirectorio + sal+ '.bmp' {sArchivo} );
iEncontrado := FindNext( Busqueda );
end;
FindClose( Busqueda );
finally
Result := ListaFavoritos;
end;
end;

procedure TForm1.OpenDialog1CanClose(Sender: TObject;
var CanClose: Boolean);
begin
if (ExtractFileExt(OpenDialog1.FileName)='.bmp')or
(ExtractFileExt(OpenDialog1.FileName)='.jpg') then begin
Imagen:=TPicture.Create;
Imagen.LoadFromFile(OpenDialog1.FileName);
Image1.Picture.Assign(Imagen);
Imagen.Free;
Lista:=TStrings.Create;
Lista:=ObtenerFavoritos(ExtractFilePath(OpenDialog1.FileName));
indice:=Lista.IndexOf(OpenDialog1.FileName);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
dec(indice);
if indice< 0 then
indice:=Lista.Count-1;
Imagen:=TPicture.Create;
Imagen.LoadFromFile(Lista[indice]);
Image1.Picture.Assign(Imagen);
Imagen.Free;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
inc(indice);
if indice > Lista.Count-1 then
indice:=0;
Imagen:=TPicture.Create;
Imagen.LoadFromFile(Lista[indice]);
Image1.Picture.Assign(Imagen);
Imagen.Free;
end;

end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejemplo funcional

Publicado por sakura (1 intervención) el 26/04/2008 21:42:42
texto funcional
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar