Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.11.2010, 01:40
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию поочередно включать таймер...

Я, понимаю, что все просто..но, что то никак не могу додуматься, как реализовать, чтобы сначала работала 1button, а потом 2button, ну или сначала таймер отсчитывает 3 мин, а потом сразу без остановки 1 минуту и снова 3 минуты, а потом снова одну и так до бесконечности
вот мой код, помогите, что надо исправить, добавить?
Цитата:
var
Form1: TForm1;
var Min3: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.enabled:=true;
Min3:=3*60;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=Format('%d : %2d',[Min3 div 60, Min3 mod 60 ]);
Dec(Min3);
if Min3 < 0 then
begin
timer1.enabled:=false;
showmessage ('stop');
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.enabled:=true;
Min3:=1*60;
end;

end.
Ответить с цитированием
  #2  
Старый 26.11.2010, 01:42
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Timer1.interval:=Min3
кстать не 3*60 а 3*60000
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 26.11.2010, 01:50
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Это будет по нажатию кнопки смена таймера.
А если надо чтоб он САМ тикал то 3 мин, то 1 мин - то так:
Код:
var fl:byte=0;
..
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//...
fl:=1-fl;
if fl=0 then
 Timer1.interval:=3*60000
else 
 Timer1.interval:=1*60000
//...
end;
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 26.11.2010, 01:51
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

спасибо! сейчас попробую!
Ответить с цитированием
  #5  
Старый 26.11.2010, 01:55
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А если с отображением времени - то
Код:
var fl:byte=0;
...

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=Format('%d : %2d',[Min3 div 60, Min3 mod 60 ]);
Dec(Min3);
if Min3 < 0 then
begin
showmessage ('stop');
fl:=1-fl;
if fl=0 then Min3:=3*60
else Min3:=1*60;
end;
end;
кнопки тут не нужны.

З.Ы. ток с 3го раза понял, что тебе надо. Пожалуйста в следующий раз чуть почётче выражай задание
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 26.11.2010 в 01:58.
Ответить с цитированием
  #6  
Старый 26.11.2010, 02:00
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

спасибо огромное, постараюсь в следующий раз по четче выражаться
Ответить с цитированием
  #7  
Старый 26.11.2010, 21:01
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

Скажите, как сделать, что бы в моей программе, когда таймер приближается к нулю, то есть за 10 секунд до конца счета выводил звук? То есть он отсчитывается время 3 минуты и когда остается 0.10 секунд выдается звук

Цитата:
var
Form1: TForm1;
var fl:byte=0;
var Min3: integer;
var k:integer;
implementation

{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
begin
Label1.Caption:=Format('%d : %2d',[Min3 div 60, Min3 mod 60 ]);
Label2.caption:=IntToStr(k div 2);
Dec(Min3);
if Min3 < 0 then
begin
fl:=1-fl;
if fl=0 then Min3:=1*60
else Min3:=3*60;
inc(k);
if k mod 2 = 0 then
label1.Font.color:=clred
else
label1.Font.color:=clblue;
If k mod 2 <> 0 then
label4.Caption := 'Rest'
else
label4.Caption := '';
end;
end;
end;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.enabled:=false;
button3.Visible:=True;
button1.Visible:=False;
button2.Visible:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
k:=2;
if label4.Caption = 'Rest' then
label4.Caption := '';
If label1.font.color = clblue then
label1.Font.color := clred;
Min3:=3*60;
timer1.enabled:=true;
button2.Visible:=False;
button3.Visible:=False;
button1.Visible:=True;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
timer1.enabled:=true;
button3.Visible:=False;
button1.Visible:=True;
button2.Visible:=False;
end;

end.
Ответить с цитированием
  #8  
Старый 26.11.2010, 21:40
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

В стандартном таймере вроде узнать сколько осталось до конца не льзя.
Поэтому я бы делал как-то так:
1) создал еще один таймер, с интервалом на 100 меньше и в нем бы проигрывал мелодию.
2) с помощью функции GetTickCount: в таймере бы сверял старые и новые значения и если они на 100 отличаются, то проиграть звук.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #9  
Старый 26.11.2010, 21:44
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

Цитата:
Сообщение от v1s2222
В стандартном таймере вроде узнать сколько осталось до конца не льзя.
Поэтому я бы делал как-то так:
1) создал еще один таймер, с интервалом на 100 меньше и в нем бы проигрывал мелодию.
2) с помощью функции GetTickCount: в таймере бы сверял старые и новые значения и если они на 100 отличаются, то проиграть звук.

а вот как в коде это реализовать? что,то не очень понимаю, как это сделать? Спасибо за совет!
Ответить с цитированием
  #10  
Старый 26.11.2010, 21:52
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Ну если чтоб было понятнее, то идем 1 способом: создаем еще один таймер.
Код:
//button2.click:
бла бла бла
...
timer1.enabled:=true;
timer2.Interval := timer1.Interval - 100;
timer2.Enabled := True;
А теперь само проигрывание музыки:
Код:
uses MMSystem;
...
// timer2timer:
  PlaySound(PChar(ExtractFilePath(ParamStr(0)) + '\Music\music.wav'),     0, SND_ASYNC);
__________________
Помогаю за Спасибо
Ответить с цитированием
  #11  
Старый 26.11.2010, 21:56
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

С твоим кодом, boxer, все в разы проще:
Код:
onTimer:
...
if Min3=10 then //играем
...
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #12  
Старый 26.11.2010, 22:04
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
...
...
...
if Min3=10 then begin ... end;
...
...
Ответить с цитированием
  #13  
Старый 26.11.2010, 22:08
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
С твоим кодом, boxer, все в разы проще:
Код:
onTimer:
...
if Min3=10 then //играем
...

Почему, он ошибку выдает?
Изображения
Тип файла: jpg 123.jpg (63.4 Кбайт, 5 просмотров)
Ответить с цитированием
  #14  
Старый 26.11.2010, 22:13
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

необходимо включить в раздел uses модуль mmsystem
Ответить с цитированием
  #15  
Старый 26.11.2010, 22:23
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

Огромнейшее Вам всем спасибо, вы меня очень выручили!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:24.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025