Всем добрый вечер, я осваиваю книжку Ю.В. Ревича - "Нестандартные приемы программирования на 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.