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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2015, 20:08   #1
povelitel
Пользователь
 
Регистрация: 27.06.2012
Сообщений: 39
По умолчанию Timer

Люди подскажите как мне сделать чтобы таймер выполнялся несколько раз и чтобы картинки у меня перелистывались с одной на другую как в слайд-шоу на javascript вот код

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, ComCtrls, ImgList, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;
  nass:array[0..4] of string;
  i:integer;

implementation

{$R *.dfm}
procedure myProc1;
begin
  nass[0]:='1.jpg';
  nass[1]:='2.jpg';
  nass[2]:='3.jpg';
  nass[3]:='4.jpg';
  nass[4]:='5.jpg';
  for i:=0 to 4 do
  begin
  Form1.Image1.Picture.LoadFromFile(nass[i]);
  end;
end;

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

end.

Последний раз редактировалось Stilet; 12.04.2015 в 08:28.
povelitel вне форума Ответить с цитированием
Старый 12.04.2015, 05:16   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
procedure myProc1;
var s:string;
begin
   i:=(i+1) mod 5;
   Case i of
   0: s:='1.jpg';
   1: s:='2.jpg';
   2: s:='3.jpg';
   3: s:='4.jpg';
   4: s:='5.jpg';
   Form1.Image1.Picture.LoadFromFile(s);
end;
Как-то так!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 12.04.2015, 08:31   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure myProc1;
var s:string;
begin
   i:=(i+1) mod 5;
   Case i of
   0: s:='1.jpg';
   1: s:='2.jpg';
   2: s:='3.jpg';
   3: s:='4.jpg';
   4: s:='5.jpg';
   end;
   Form1.Image1.Picture.LoadFromFile(s);
end;
Но думаю лучше так:
Код:
procedure myProc1;
const a:array[0..4] of string=('первы','второй','третий','четвертый','пятый');
var s:string;
begin
   s:=a[i mod Length(a)]+'.jpg';
   if FileExists(s) then
    Form1.Image1.Picture.LoadFromFile(s);
   inc(i);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2015, 09:43   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Для лучшей оптимизации следует загрузить эти картинки перед показом в потоки, а потом уже загружать в картинку из памяти. Так получаешь максимум быстродействия при потребление RAM в несколько десятков мегабайт(В современном мире уже нет сильной нужды беречь потребление памяти, нужно её правильно использовать!).
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 12.04.2015, 13:24   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не согласен. Даже во времена ДОС применялось более лучшее решение - подгрузка по мере необходимости. Загружалась текущая и следующая за ней картинка (или пара картинок). По мере продвижения по страницам подгружались в очередь следующие картинки. Нет никакой необходимости сразу загружать все.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.04.2015, 16:57   #6
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

Таймер несколько раз примерно так:

объявляешь глобальную переменную
Код:
var
TimeCount: integer
перед запуском таймера
Код:
TimeCount:=0
В обработчике таймера
Код:
if TimeCount=10 then timer1.active:=false;
inc(TimeCount)
Как-то так. Что быстро в голову пришло!
Yuran вне форума Ответить с цитированием
Старый 12.04.2015, 17:07   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Лучше использовать её не как глобальную переменную, а как свойство используемого объекта.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Timer nwhta C# (си шарп) 10 31.08.2013 22:41
Timer Bit_Man C++ Builder 6 13.03.2012 14:30
Timer samsung Общие вопросы Delphi 1 17.12.2011 08:41
timer Небесный Общие вопросы Delphi 16 05.12.2011 01:02
timer Toxa Компоненты Delphi 6 06.12.2006 06:58