Hola.
Otra alternativa es cargar todas las imágenes de una carpeta en algun punto de tu código e ir mostrándolas.
En el código de ejemplo que te adjunto se cargan de forma fija en el evento
OnShow, pero podrías elegir la carpeta por otro medio.
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Contnrs;
type
TForm1 = class(TForm)
Image1: TImage;
btSiguiente: TButton;
btAnterior: TButton;
procedure FormShow(Sender: TObject);
procedure btSiguienteClick(Sender: TObject);
procedure btAnteriorClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
FPtr: Integer; FObjLst: TObjectList;
procedure LeerJPGS(const Ruta: string);
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
uses JPeg;
procedure TForm1.LeerJPGS(const Ruta: string);
var
SR: TSearchRec;
Img: TImage;
begin
if FindFirst(Ruta+'\*.JPG',faArchive, SR) = 0 then
begin
repeat
Img:= TImage.Create(Self);
Img.Picture.LoadFromFile(Ruta+'\'+SR.Name);
FObjLst.Add(Img);
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
FPtr:= 0;
FObjLst:= TObjectList.Create;
LeerJPGS('C:\Users\Usuario\Pictures');
Image1.Stretch:= True;
Image1.Picture:= TImage(FObjLst.Items[FPtr]).Picture; end;
procedure TForm1.btSiguienteClick(Sender: TObject);
begin
if FPtr < FObjLst.Count then Inc(FPtr);
Image1.Picture:= TImage(FObjLst.Items[FPtr]).Picture;
end;
procedure TForm1.btAnteriorClick(Sender: TObject);
begin
if FPtr > 0 then Dec(FPtr);
Image1.Picture:= TImage(FObjLst.Items[FPtr]).Picture;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(FObjLst) then
FObjLst.Free;
Action:= caFree;
end;
end.
Saludos.