Путь к истине

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Путь к истине » Программирование » Программа таймер на Lazarus


Программа таймер на Lazarus

Сообщений 1 страница 2 из 2

1

Написал програмульку таймер.
В ней указывается время , через которое будет сигнал.
В качестве сигнала используется звуковой файл 023243.wav
Есть возможность выбора  в минутах и секундах.
Пока таймер включён горит красная надпись.

http://s7.uploads.ru/t/dL9gW.jpg

http://sh.uploads.ru/t/6tUvg.jpg

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, mmsystem, Dialogs,
  ExtCtrls, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioGroup1: TRadioGroup;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: char);
    procedure FormActivate(Sender: TObject);
    procedure RadioButton1Change(Sender: TObject);
    procedure RadioButton2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;
   tgl: Integer;
   aaa: Integer;
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  if(Edit1.Text = '') then Edit1.Text := '0';
  if(RadioButton1.Checked = True)then
  tgl := StrtoInt(Edit1.Text)* 60;
  if(RadioButton2.Checked = True)then
  tgl := StrtoInt(Edit1.Text);


   aaa:= 0;
   Label2.Visible:= True;
   Timer1.Enabled:= True;


end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
   if not (Key in ['0'..'9']) then Key := #0;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
   RadioButton1.Checked := True;
  tgl:= 0;
   aaa:= 0;
   Timer1.Enabled:= False;
   Label2.Visible:= False;
end;

procedure TForm1.RadioButton1Change(Sender: TObject);
begin
   Label1.Caption:= 'min';
end;

procedure TForm1.RadioButton2Change(Sender: TObject);
begin
   Label1.Caption:= 'sec';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

 if (aaa = tgl) then
begin
 PlaySound(PChar('023243.wav'),0,SND_FILENAME+SND_ASYNC );
 Label2.Visible:= False;
 Timer1.Enabled:= False;
end;
  aaa:=aaa+1;
end;

end.



0

2

Чуток переписал код, теперь таймер показывает обратный отсчёт в секундах
Также исправил недоработку в защите от дурака, добавил код бекспейса.

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, mmsystem, Dialogs,
  ExtCtrls, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioGroup1: TRadioGroup;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: char);
    procedure FormActivate(Sender: TObject);
    procedure RadioButton1Change(Sender: TObject);
    procedure RadioButton2Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;
   tgl: Integer;
   aaa: Integer;
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  if(Edit1.Text = '') then Edit1.Text := '0';
  if(RadioButton1.Checked = True)then
  tgl := StrtoInt(Edit1.Text)* 60;
  if(RadioButton2.Checked = True)then
  tgl := StrtoInt(Edit1.Text);


   aaa:= 0;
Label2.Caption:='Remain '; 
   Label2.Visible:= True;
   Timer1.Enabled:= True;


end;



procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
   if not (Key in ['0'..'9',#8]) then Key := #0;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
   RadioButton1.Checked := True;
  tgl:= 0;
   aaa:= 0;
   Timer1.Enabled:= False;
   Label2.Visible:= False;
end;

procedure TForm1.RadioButton1Change(Sender: TObject);
begin
   Label1.Caption:= 'min';
end;

procedure TForm1.RadioButton2Change(Sender: TObject);
begin
   Label1.Caption:= 'sec';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

 if (aaa = tgl) then
begin
 PlaySound(PChar('023243.wav'),0,SND_FILENAME+SND_ASYNC );
 Label2.Visible:= False;
 Timer1.Enabled:= False;
end;
  aaa:=aaa+1;
  Label2.Caption:='Remain '+ IntToStr(tgl-aaa)+ ' sec ';
end;

end.

0


Вы здесь » Путь к истине » Программирование » Программа таймер на Lazarus