Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.035 c
14-1135848534
Игорь Шевченко
2005-12-29 12:28
2006.01.22
Как не надо программировать


2-1136488658
asd
2006-01-05 22:17
2006.01.22
DBGrid


14-1135968434
Nick12
2005-12-30 21:47
2006.01.22
Delphi


2-1136027458
GuAV
2005-12-31 14:10
2006.01.22
if Assigned(Self) then Result := FList else Result := EmptyList;


9-1123795989
Sargoros
2005-08-12 01:33
2006.01.22
DirectX 6.0 on Unger-а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский