Форум: "Начинающим";
Текущий архив: 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.043 c