Ver Mensaje Individual
  #7  
Antiguo 04-06-2011
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Reputación: 21
rrf Va por buen camino
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
    { Private declarations }
  public
    { Public declarations }
  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    // Button1 ---> Imagen anterior
    else Posicion := Posicion +1 ;  // Button2 ---> Imagen siguiente

  if Posicion < 0                  // Evita exceder límites
    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 ;       // Ajusta ancho y alto
  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

Última edición por rrf fecha: 04-06-2011 a las 18:15:15. Razón: añadir comentario
Responder Con Cita