У цій статті я розповім вам, як легко можна зробити слайдшоу на Делфі. Навіщо вам слайдшоу? Відповідаю: подібні алгоритми (або навіть цей алгоритм може бути використаний вами в різних додатках, що може поліпшити або просто прикрасити їх.
Отже, слайдшоу. Відразу домовимося, що список файлів для показу буде завантажуватися в ListBox і після натискання кнопки «Почати показ» через вказаний користувачем інтервал (в секундах) зображення по черзі будуть грузиться в TImage.
Зробіть на формі кнопку «Додати», після натискання якої буде з’являтися OpenDialog і вибрані файли будуть додаватися в ListBox.
Ось обробник події натискання кнопки «Додати»:
procedure TForm1.addClick(Sender: TObject);
var
aDial: TOpenDialog;
anOptions: TOpenOptions;
begin
aDial := TOpenDialog.Create(Self);
aDial.Filter:=’Файли малюнків|*.bmp;*.jpg;*.gif’;
Try
anOptions := aDial.Options;
Include(anOptions, ofAllowMultiSelect);
aDial.Options := anOptions;
If Not aDial.Execute Then Exit;
ListBox.Items.AddStrings(aDial.Files);
Finally
aDial.Free;
End;
end;
Також зробимо ще дві кнопки «Видалити» і «Видалити все», натиснувши які можна буде видалити окремий файл зі списку, або очистити весь список. І залишається тільки кинути на форму кнопки «Почати показ» і «Зупинити показ». Все, з кнопками закінчили. Ще для цієї програми нам знадобиться таймер, щоб показувати малюнки через вказаний інтервал. Природно, на формі потрібен буде один Edit, в якому користувач зможе вказати інтервал.
Тепер пишемо обробники натискання кнопок.
Кнопка «Видалити». Тут все просто:
procedure TForm1.delClick(Sender: TObject);
begin
ListBox.DeleteSelected; //вилучає виділений файл зі списку
end;
Кнопка «Видалити все». Аналогічно просто:
procedure TForm1.del_allClick(Sender: TObject);
begin
ListBox.Items.Clear;//очищає список файлів
end;
А зараз найголовніше. Кнопка «Почати показ».
procedure TForm1.startClick(Sender: TObject);
var
i: integer;
begin
Timer.Enabled:=True;//включаємо таймер
i:=StrToInt(intime.Text);//дізнаємося інтервал
Timer.Interval:= i * 1000;//встановлюємо інтервал на таймер
n:= ListBox.Items.Count;//вважаємо кількість файлів в ListBox
a:=0;
img.Stretch:=true;
img.Picture.LoadFromFile(ListBox.Items.Strings[a]);//показуємо перший файл
a:=a+1;
end;
{далі за справу візьметься таймер}
І, нарешті, остання кнопка «Зупинити показ».
procedure TForm1.stopClick(Sender: TObject);
begin
Timer.Enabled:=False;//просто вимикаємо таймер
end;
Все, з кнопками розібралися. Коли ми писали оброблювач натискання кнопки «Начатьп показ», ви помітили, що цей обробник показує тільки перший файл зі списку, а потім він передає справу в руки таймера. Тому нам залишилося тільки написати, що ж повинен робити таймер, коли це саме справа потрапить йому до рук. А він повинен робити ось що:
procedure TForm1.TimerTimer(Sender: TObject);
begin
if a
img.Picture.LoadFromFile(ListBox.Items.Strings[a]);
a:=a+1;
end else a:=0;
end;
Ось і вся програма слайдшоу, тепер додайте рядок «n, a: integer;» var і якщо ви все зробили правильно, ви повинні отримати просту програму, яка показує вам картинки через певний інтервал.
Я використовую цей алгоритм у декількох програмах, що не завжди в такому вигляді, яким його я вам показав, але тим не менш, він часто буває корисний. Наедюсь, що і вам він стане в нагоді.
Удачі вам і пам’ятайте, що програміст — це не професія, це спосіб життя! 😉