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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2009, 17:28   #1
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
Вопрос Метроном

Решил сделать СВОЙ метроном...
в принципе чтоб стучал он получилось, только остановить ентого зверя не удается... ))) подскажите, плз, как заставить прогу проверять нажималась ли кнопка... где-то видел я такую штуку, но где.....
Костян Пират вне форума Ответить с цитированием
Старый 13.08.2009, 17:34   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Завести глобальную переменую типа Boolean. Например MetronomEnabled : Boolean;

В обработчике Таймер таймера:
If MetronomEnabled = False Then Timer.Enabled := False;

В обработчике ОнКлик кнопки:
MetronomEnabled := False;

В обработчике ФормЛоад:
MetronomEnabled := True;
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 13.08.2009, 19:24   #3
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
По умолчанию

проблема другая... Timer ни к черту не подходит... тормозит... так что получается не метроном, а чОрт знает что... пробую sleep'ом, вот так:
Код:
type
<...>
    mpl: TMediaPlayer;
<...>

const
 wav = 'sound.wav';

var
 int: integer;

const
 wav = 'sound.wav';

var
 int: integer;

procedure TForm1.Playing;
begin
 mpl.Play;
 sleep(int);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not play then play:=true
             else play:=false;

 while play do Playing;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
 int:= 1000;

 mpl.FileName:=wav;
 mpl.Open;
end;
Костян Пират вне форума Ответить с цитированием
Старый 13.08.2009, 21:49   #4
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

У меня с таймером не тормозит.
Единственное поставил
Код:
MediaPlayer1.Wait := False;
Вложения
Тип файла: zip Metronom.zip (65.5 Кб, 30 просмотров)
s.Creator вне форума Ответить с цитированием
Старый 13.08.2009, 23:12   #5
Костян Пират
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 103
По умолчанию

s.Creator, спасибо, примерно то же я и делал первоначально с таймером... но как он ведет себя видимо от проца зависит, а он у меня не ахти... хотел просто попробовать со sleep, может лучше будет вести себя...
Костян Пират вне форума Ответить с цитированием
Старый 13.08.2009, 23:19   #6
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Тогда попробуй так:
Код:
procedure TForm1.Playing;
begin
 mpl.Play;
 sleep(int);
 Application.ProcessMessages;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 play:=true;
 while play do Playing;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  play:=false;
end;
s.Creator вне форума Ответить с цитированием
Старый 13.08.2009, 23:30   #7
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

еще нашел статью про высокоточный таймер (не проверял)
http://www.webdelphi.ru/2009/08/vyso...svoimi-rukami/
s.Creator вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метроном Mary Общие вопросы C/C++ 1 08.12.2008 13:43