Показать сообщение отдельно
  #1  
Старый 01.03.2011, 21:39
AnderoN AnderoN вне форума
Прохожий
 
Регистрация: 18.02.2011
Сообщения: 31
Репутация: 10
По умолчанию Помогите разобраться

Всем добрый вечер, я осваиваю книжку Ю.В. Ревича - "Нестандартные приемы программирования на Delphi", сделал один из первых примеров, программа должна выполнять следующую функцию:
Заходим нажимаем в меню - Открыть. Открываем картинку jpeg, программа должна вывести эту картинку в окне Image и начать показывать слайдшоу всех картинок, находящихся в папке, с первой открытой картинкой, так же при остановке слайд шоу, можно просто листать эти картинки, нажимаю на кнопку. Я написал программный код точно как в книжке дано, но программа почему то только открывает первую выбранную мной картинку, но не запускает слайдшоу и при нажатии на кнопку перелистывания картинок,тоже ничего не происходит (видимо программа не понимает, что ей необходимо открывать все картинки из папки). Помогите пожалуйста разобраться что не так.
Вот код программы.

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    OpenDialog1: TOpenDialog;
    Timer1: TTimer;
    Button1: TButton;
    Panel1: TPanel;
    Image1: TImage;
    File1: TMenuItem;
    Show1: TMenuItem;
    Open1: TMenuItem;
    Run1: TMenuItem;
    procedure Open1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Run1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  n:integer=0;
  srf:TSearchRec;
  st:string;

implementation

{$R *.dfm}
procedure Loadfile;{Процедура поиска и загрузки файлов JPEG}
begin
  if n=0 then {Если это первая загрузка}
  begin
    if FindFirst ('*.jpeg',faAnyFile,srf)<>0 then exit;
    {Ищем самый первый JPEG-файл в папке, если не находим выход из процедуры}
    try{Пробуем его загрузить в Image1}
    Form1.Image1.Picture.LoadFromFile(srf.Name);
    except {Это вовсе не JPEG}
    {Выводим сообщение}
    st:='Неправильный формат файла'+srf.Name;
    Application.MessageBox(Pchar(st),'Error',MB_OK);
    exit{Выход из процедуры}
  end;
  n:=1;{Следующая загрузка будет уже не первой}
  end else {Если эта загрузка уже не первая}
  begin
    if FindNext(srf)=0 then
    {Если =0, то найден следующий файл}
    try {Пробуем его загрузить в Image1}
    Form1.Image1.Picture.LoadFromFile(srf.Name)
    except {Это вовсе не JPEG}
    {Выводим сообщение}
    st:='Неправильный формат файла'+srf.Name;
    Application.MessageBox(Pchar(st),'Error',MB_OK);
    exit{Выход из процедуры}
  end
  else {А если не 0 - значит файлов больше нет}
  begin
    FindClose(srf); {Закрываем поиск}
    n:=0;{В следующий раз начнем сначала}
  end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Loadfile;
end;

procedure TForm1.Run1Click(Sender: TObject); {Запуск и остановка демонстрации слайдов}
begin
  if Timer1.Enabled=False then {Если демонстрация была остановлена}
  begin
    Run1.Caption:='Стоп'; {Меняем название пункта меню на СТОП}
    Timer1.Enabled:=True; {Запустили таймер}
  end else {Иначе,если демонстрация уже идет}
  begin
    Run1.Caption:='Запуск'; {Меняем название пункта меню обратно на ЗАПУСК}
    Timer1.Enabled:=False; {Таймер остановлен}
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Loadfile;
end;

procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
{Если диалог открытия файла завершился удачно}
Image1.Picture.LoadFromFile(OpenDialog1.FileName)
{Загружаем картинку в Image1}
else
begin
  {Иначе,если диалог завершился неудачно, выводим сообщение}
  st:='Неправильный формат файла'+OpenDialog1.FileName;
  Application.MessageBox(Pchar(st),'Error',MB_OK);
  exit;{Выходим из процедуры}
end;
n:=0;{n=0 - признак первой закрузки из данной папки}
end;
end.
Ответить с цитированием