Hola.
Aunque no estoy seguro, creo que la forma en la que lo resolvió ecfisa no servirá para las nuevas condiciones que has añadido en tu consulta.
Te propongo una estrategia alternativa utilizando un TFileListBox, 2 botones, 1 TOpenPictureDialog y 1 TImage.
Este es el código. Lo he probado en Delphi 7 y va bien. Creo que resuelve todas las condiciones que necesitas.
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtDlgs, FileCtrl, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
FileListBox1: TFileListBox;
OpenPictureDialog1: TOpenPictureDialog;
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
Posicion : Integer ;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
FileListBox1.Directory := ExtractFilePath( OpenPictureDialog1.FileName ) ;
FileListBox1.Mask := '*.jpg' ;
FileListBox1.Update ;
Image1.Picture.LoadFromFile( FileListBox1.Items [0] );
Posicion := 0 ;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Sender = Button1
then Posicion := Posicion -1 else Posicion := Posicion +1 ;
if Posicion < 0 then Posicion := 0 ;
if Posicion > FileListBox1.Items.Count -1
then Posicion := FileListBox1.Items.Count -1 ;
Image1.Picture.LoadFromFile( FileListBox1.Items [ posicion ] );
Image1.Width := Image1.Picture.Width ; Image1.Height := Image1.Picture.Height ;
end;
end.
Usé el TOpenPictureDialog porque supuse que era posible que la carpeta con los archivos JPG puede ser cambiar.
En el TFileListBox, le pones
Visible en False para que no lo vean los usuarios.
Espero que te sirva.
Saludos