Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Работа с таймером   Найти похожие ветки 

 
mozgan   (2006-01-05 18:43) [0]

Всем вечер добрый !
У меня есть один вопрос, который решить не могу никак.
Я начинающий, и добрался до попытки написать прогу для
просмотра картинок в формате jpeg. Получилось.
Да вот прикол-то: картинок 1000, а руки две (клацкает правая).
Ужас! Задача такая, как можно реализовать работу таймера?
Точнее, чтобы сам загружал следующую картинку, в цикле.
Моя попытка привела к зацикливанию одного и того же изображения.
Подскажите, пожалуйста, если вопрос не сложный!
С уважением, Саша.

procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
begin
 for i:=0 to FileListBox1.Items.Count-1 do
 if FileListBox1.Selected[i]=true then
 image1.Picture.LoadFromFile(FileListBox1.FileName);
end;


 
Anatoly Podgoretsky ©   (2006-01-05 18:52) [1]

Цикл for нужно убрать отсюда и сделать поле LastIndex, которое наращивать здесь

while LastIndex < FileListBox1.Items.Count do
begin
  if FileListBox1.Selected[LastIndex]
  then
  begin
    image1.Picture.LoadFromFile(FileListBox1.FileName);
    LastIndex := LastIndex + 1;
    Break;
  end
  else
  begin
    LastIndex := LastIndex + 1
  end;
end;


 
Джо ©   (2006-01-05 19:03) [2]

А зачем в обработчике OnTimer вообще цикл?!


 
Джо ©   (2006-01-05 19:19) [3]

Пример.
Форма, на ней две кнопки, лист-бокс со списком имен файлов и TImage.

 TForm16 = class(TForm)
   Image1: TImage;
   ListBox1: TListBox;
   Timer1: TTimer;
   Button1: TButton;
   Button2: TButton;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   FPicIndex: Integer;
   procedure NextIndex;
   procedure StartSlideShow;
   procedure StopSlideShow;
 public
 end;

implementation

...

procedure TForm16.Button1Click(Sender: TObject);
begin
 StartSlideShow
end;

procedure TForm16.Button2Click(Sender: TObject);
begin
 StopSlideShow
end;

procedure TForm16.NextIndex;
begin
 Inc (FPicIndex);
 if FPicIndex > (ListBox1.Items.Count-1) then
   FPicIndex := 0;
end;

procedure TForm16.ResetIndex;
begin
 FPicIndex := 0;
end;

procedure TForm16.StartSlideShow;
begin
 if ListBox1.Items.Count=0 then
   raise Exception.Create("Список пуст");

 ResetIndex;
 Timer1.Enabled := True;
end;

procedure TForm16.StopSlideShow;
begin
 Timer1.Enabled := False;
 ResetIndex;
end;

procedure TForm16.Timer1Timer(Sender: TObject);
var
 FileName: string;
begin
 ListBox1.ItemIndex := FPicIndex;
 FileName := ListBox1.Items[FPicIndex];
 if FileExists (FileName) then
   Image1.Picture.LoadFromFile(FileName);

 NextIndex;
end;

В дизайнере установи Timer1.Enabled := False;
Одна кнопка запускает слайд-шоу, другая останавливает.


 
mozgan   (2006-01-05 19:31) [4]

Anatoly !

Спасибо за ответ! Я немного не понял, что такое LastIndex? Переменная?
И как правильно сделать? В таймере?
Я переписал Ваш код, но прога ничего не делает. Интервал таймер - 1000



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
6-1128695410
NikNet
2005-10-07 18:30
2006.01.22
Как изменить Сетевое имя/IP/Коментарий?


14-1135920937
begin...end
2005-12-30 08:35
2006.01.22
С Днём рождения! 30 декабря


14-1135366258
meta_person
2005-12-23 22:30
2006.01.22
put_in: оптимизированный тоталитаризм


14-1135511079
Ламерюга
2005-12-25 14:44
2006.01.22
Как узнать значение переменной хранящейся в другой форме!


14-1135460710
VirEx
2005-12-25 00:45
2006.01.22
Klubbheads &amp; DJ Disco