Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2018, 12:48   #1
BVnosferatu
Пользователь
 
Регистрация: 19.05.2018
Сообщений: 27
Вопрос Как в делфи сделать смену картинок с помощью таймера?

Учился по книге, писал функцию loadfile с книги, что не так??? Если не сложно укажите на проблему или ошибку и растолкуйте что я сделал не так. Проект кинуть не могу, блочит сайт. Заранее спасибо.
Код:
unit Slide;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button5: TButton;
    Edit1: TEdit;
    Image1: TImage;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    Run1: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    PopupMenu1: TPopupMenu;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure Run1Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem7Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation
                         var interval : integer;  n:integer=0; srf:TSearchRec;
{$R *.lfm}                                                     st:string;

{ TForm1 }

procedure Loadfile;
begin
if(n=0) then begin
    if FindFirst('*.jpg',faAnyFile,srf)<>0 then exit;
    try
       form1.image1.picture.loadfromfile(srf.Name);
    Except;
     st:='Неправильный формат файла '+srf.name;
     Application.messagebox(pchar(st),'Ошибка');
     exit;
    end;
    n:=1;
end else begin if(findNext(srf)=0) then
try
     form1.image1.picture.loadfromfile(srf.Name);
  Except;
   st:='Неправильный формат файла '+srf.name;
   Application.messagebox(pchar(st),'Ошибка');
   exit;

  end else begin
  findclose(srf);
  n:=0;
  end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if(timer1.enabled=false) then
  timer1.Enabled:=true;
if(timer1.enabled=false) then
  timer1.enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  interval:=strtoint(edit1.Text);
  Timer1.Interval:=interval*1000;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin

end;

procedure TForm1.Edit1Change(Sender: TObject);
begin

end;

procedure TForm1.MenuItem1Click(Sender: TObject);
begin
  ShowMessage('SlideShow1.0, бета тест. Программа служит для просмотра изображений в слайд шоу для мониторов с низким расширением. Горячие клавиши: открыть(ctrl+o),закрыть(ctrl+a). Примечание: фуллскрин не проработан, извиняюсь за неудобства, скоро поправлю.');
end;

procedure TForm1.MenuItem2Click(Sender: TObject);
begin
  loadfile;
end;

procedure TForm1.Run1Click(Sender: TObject);
  begin
    if(timer1.enabled=false) then begin
    run1.caption:='Стоп';
    button2.caption:='Отключить таймер';
    timer1.enabled:=true;
end else begin
Run1.caption:='Запуск';
timer1.enabled:=false;
if(timer1.enabled=false) then button2.caption:='Включить таймер';
end;
end;


procedure TForm1.MenuItem5Click(Sender: TObject);
begin
  if(OpenDialog1.Execute) then begin
  Image1.Picture.loadfromfile(OpenDialog1.filename);
  end else begin
  st:='Неправильный формат файла : '+ opendialog1.filename;
  Application.MessageBox(Pchar(st),'Ошибка');
  exit;
  end;
  n:=0;{признак 1-ой загрузки из папки}
  end;

procedure TForm1.MenuItem7Click(Sender: TObject);
begin
  image1.Picture.Clear;
end;

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

end.
BVnosferatu вне форума Ответить с цитированием
Старый 22.09.2018, 12:49   #2
BVnosferatu
Пользователь
 
Регистрация: 19.05.2018
Сообщений: 27
По умолчанию

Книга Юрия Ревича: "Нестандартные приемы программирования на DELPHI", - сама функция на 60 странице.
BVnosferatu вне форума Ответить с цитированием
Старый 22.09.2018, 14:23   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от BVnosferatu Посмотреть сообщение
procedure Loadfile;
begin
if(n=0) then begin
if FindFirst('*.jpg',faAnyFile,srf)<>0 then exit;
try
form1.image1.picture.loadfromfile(s rf.Name);
Except;
st:='Неправильный формат файла '+srf.name;
Application.messagebox(pchar(st),'О шибка');
exit;
end;
n:=1;
end else begin if(findNext(srf)=0) then
try
form1.image1.picture.loadfromfile(s rf.Name);
Except;
st:='Неправильный формат файла '+srf.name;
Application.messagebox(pchar(st),'О шибка');
exit;

end else begin
findclose(srf);
n:=0;
end;
end;
end;
Количество «begin» не совпадает с «end».
Учите условный оператор:
http://www.cyberguru.ru/pascal/pasca...ion-page6.html
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 22.09.2018, 14:24   #4
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от BVnosferatu Посмотреть сообщение
Проект кинуть не могу, блочит сайт. Заранее спасибо.
Код:
Проект пакуете в архив, архив выкладываете на сайт.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 27.09.2018, 08:12   #5
D1973
Пользователь
 
Регистрация: 04.04.2018
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Проект пакуете в архив
хочу просто добавить, что к проекту относятся файлы *.dpr, *.pas, *.dfm. Вся остальная шняга (и, тем более, Ваш скомпилированный ехе-файл) нафиг не нужны.
D1973 вне форума Ответить с цитированием
Старый 27.09.2018, 08:26   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

может, научить товарища студента, как картинки в файл ресурсов запихивать?тогда хоть с путями с проверкой наличия файлов проблем не будет...
а извлечение из ресурсов - дело пустяковое и очень простое.
или вы всё же хотите, чтоб программа подгружала картинки, которые лежат в какой-то папке?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать многократную смену пароля пользователя при каждом входе в систему?в windows server. Rina276 Администрирование dedicated серверов, VPS/VDS, shared хостингов, IaaS, PaaS. 1 04.06.2017 13:48
Нужно сделать плавную смену изображений! Arina96 HTML и CSS 3 03.09.2013 10:03
Как сделать в Excel 2007 автоматическую смену ячейки YooJen Microsoft Office Excel 4 05.10.2010 08:14
GLScene, как сделать смену дня и ночи? Alex2009 Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 16.09.2009 20:16
Как с помощью классов(созданных ранее) в делфи сделать вывод информации из текстового документа PRIVIDENIE18 Помощь студентам 1 25.05.2009 12:04