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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2011, 18:35   #1
kop
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 65
По умолчанию Будильник/секундомер

Задание: создать часы/будильник/секундомер

Вообщем все написал, вот только когда звонит будильник он 5 раз пищит, а нужно что-бы он пищал пока я его не отключу....
Код:
unit Project2;


interface

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

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    Panel_cloc: TPanel;
    Timer_cloc: TTimer;
    Timer_alarm_clock: TTimer;
    Timer_stopwatch: TTimer;
    seconds_alarm: TEdit;
    min_alarm: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    cloc_alarm: TEdit;
    Button3: TButton;
    Button4: TButton;
    Panel1: TPanel;
    N4: TMenuItem;
    N5: TMenuItem;
    on1: TMenuItem;
    off1: TMenuItem;
    procedure Timer_clocTimer(Sender: TObject);
    procedure Timer_stopwatchTimer(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer_alarm_clockTimer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
   
var

  Form1: TForm1;
  chas:Integer;//÷àñû
  min:Integer;//ìèíóòû
  sec:Integer;//ñåêóíäû
  mili,a:integer; //
  a1,a2,a3:string;//íîëèêè äëÿ ñåêóíäîìåðà
  cloc:Integer;//áóäèëüíèê
  h,m,s,ms,i,bh,bm,bs:integer;
  tm: SYSTEMTIME;


implementation

{$R *.dfm}

procedure TForm1.Timer_clocTimer(Sender: TObject);
begin
Panel_cloc.Caption:=TimeToStr(Now);
end;

procedure TForm1.Timer_stopwatchTimer(Sender: TObject);
begin
ms:=ms+1;
if ms=60 then
begin
  ms:=0;
 s:=s+1;
end;

if s>60 then
  begin
  s:=0;
  m:=m+1
  end;
if m>60 then
  begin
  m:=0;
  h:=h+1;
  end;
  Panel1.Caption:=IntToStr(h)+':'+inttostr(m)+':'+inttostr(s)+':'+inttostr(ms);
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
 Panel1.Caption:='00:00:00'  ;
m:=0;s:=0;ms:=0;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if Button3.Caption = 'Ïóñê'  then  Button3.Caption := 'Ñòîï'
else    Button3.Caption:='Ïóñê';

 if  Timer_stopwatch.Enabled=True then
 Timer_stopwatch.Enabled:=False  else
   Timer_stopwatch.Enabled:=True;
end;



procedure TForm1.Button1Click(Sender: TObject);

begin
Button1.Caption :='Æäèòå';
a:=2;
Timer_alarm_clock.Enabled:=True;
end;


procedure TForm1.Timer_alarm_clockTimer(Sender: TObject);
begin
GetLocalTime(tm);
if (cloc_alarm.Text+':'+min_alarm.Text+':'+seconds_alarm.Text=Panel_cloc.Caption)
    then
 Windows.Beep(2000,500);

end;


procedure TForm1.Button2Click(Sender: TObject);
begin
 Timer_alarm_clock.Enabled:=False;
end;

end.
kop вне форума Ответить с цитированием
Старый 04.10.2011, 19:44   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

как вариант - введите глобальную булеву переменную, которая будет устанавливаться при срабатывании условия, и сбрасываться в случае выключения (нажатия кнопки)
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 04.10.2011, 19:47   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

хм, внешне всё верно, но попробуйте в последнем случае написать хотя бы так:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if(Timer_alarm_clock.Enabled=True)then Timer_alarm_clock.Enabled:=False;
end;
можно уж и совсем иначе:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   if(s=0)then...;//а вот тут проверяем его в действии
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    s:=0;//по нажатию кнопки делаем его таким
end;

procedure TForm1.FormCreate(Sender:TObject);
begin
   s:=1;//по умолчанию этот параметр такой
end;
не забудьте объявить
Код:
 s: Byte;
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 04.10.2011, 20:29   #4
kop
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 65
По умолчанию

спасибо попробую
kop вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
секундомер ruavia3 Microsoft Office Excel 53 24.03.2021 16:46
Будильник/секундомер kop Помощь студентам 0 02.10.2011 23:53
Секундомер Ins1De Общие вопросы C/C++ 3 26.05.2010 22:14
Секундомер girkoff Общие вопросы C/C++ 3 26.12.2009 12:30